erp-suite/apps/shared-libs/core/constants/database.constants.ts

164 lines
3.4 KiB
TypeScript

/**
* Database Constants - Schema and table names for ERP-Suite
*
* @module @erp-suite/core/constants
*/
/**
* Database schema names
*/
export const DB_SCHEMAS = {
AUTH: 'auth',
ERP: 'erp',
INVENTORY: 'inventory',
SALES: 'sales',
PURCHASE: 'purchase',
ACCOUNTING: 'accounting',
HR: 'hr',
CRM: 'crm',
PUBLIC: 'public',
} as const;
/**
* Auth schema tables
*/
export const AUTH_TABLES = {
USERS: 'users',
TENANTS: 'tenants',
ROLES: 'roles',
PERMISSIONS: 'permissions',
USER_ROLES: 'user_roles',
ROLE_PERMISSIONS: 'role_permissions',
SESSIONS: 'sessions',
} as const;
/**
* ERP schema tables
*/
export const ERP_TABLES = {
PARTNERS: 'partners',
CONTACTS: 'contacts',
ADDRESSES: 'addresses',
PRODUCTS: 'products',
CATEGORIES: 'categories',
PRICE_LISTS: 'price_lists',
TAX_RATES: 'tax_rates',
} as const;
/**
* Inventory schema tables
*/
export const INVENTORY_TABLES = {
WAREHOUSES: 'warehouses',
LOCATIONS: 'locations',
STOCK_MOVES: 'stock_moves',
STOCK_LEVELS: 'stock_levels',
ADJUSTMENTS: 'adjustments',
} as const;
/**
* Sales schema tables
*/
export const SALES_TABLES = {
ORDERS: 'orders',
ORDER_LINES: 'order_lines',
INVOICES: 'invoices',
INVOICE_LINES: 'invoice_lines',
QUOTES: 'quotes',
QUOTE_LINES: 'quote_lines',
} as const;
/**
* Purchase schema tables
*/
export const PURCHASE_TABLES = {
ORDERS: 'orders',
ORDER_LINES: 'order_lines',
RECEIPTS: 'receipts',
RECEIPT_LINES: 'receipt_lines',
BILLS: 'bills',
BILL_LINES: 'bill_lines',
} as const;
/**
* Accounting schema tables
*/
export const ACCOUNTING_TABLES = {
ACCOUNTS: 'accounts',
JOURNALS: 'journals',
JOURNAL_ENTRIES: 'journal_entries',
JOURNAL_LINES: 'journal_lines',
FISCAL_YEARS: 'fiscal_years',
PERIODS: 'periods',
} as const;
/**
* HR schema tables
*/
export const HR_TABLES = {
EMPLOYEES: 'employees',
DEPARTMENTS: 'departments',
POSITIONS: 'positions',
CONTRACTS: 'contracts',
PAYROLLS: 'payrolls',
ATTENDANCES: 'attendances',
} as const;
/**
* CRM schema tables
*/
export const CRM_TABLES = {
LEADS: 'leads',
OPPORTUNITIES: 'opportunities',
ACTIVITIES: 'activities',
CAMPAIGNS: 'campaigns',
PIPELINE_STAGES: 'pipeline_stages',
} as const;
/**
* Common column names used across all tables
*/
export const COMMON_COLUMNS = {
ID: 'id',
TENANT_ID: 'tenant_id',
CREATED_AT: 'created_at',
CREATED_BY_ID: 'created_by_id',
UPDATED_AT: 'updated_at',
UPDATED_BY_ID: 'updated_by_id',
DELETED_AT: 'deleted_at',
DELETED_BY_ID: 'deleted_by_id',
} as const;
/**
* Status constants
*/
export const STATUS = {
ACTIVE: 'active',
INACTIVE: 'inactive',
SUSPENDED: 'suspended',
PENDING: 'pending',
APPROVED: 'approved',
REJECTED: 'rejected',
DRAFT: 'draft',
CONFIRMED: 'confirmed',
CANCELLED: 'cancelled',
DONE: 'done',
} as const;
/**
* Helper function to build fully qualified table name
*
* @param schema - Schema name
* @param table - Table name
* @returns Fully qualified table name
*
* @example
* ```typescript
* const tableName = getFullTableName(DB_SCHEMAS.AUTH, AUTH_TABLES.USERS);
* // Returns: 'auth.users'
* ```
*/
export function getFullTableName(schema: string, table: string): string {
return `${schema}.${table}`;
}