/** * Database Constants - Schema and table names for ERP-Suite * * @module @erp-suite/shared/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}`; }