244 lines
12 KiB
TypeScript
244 lines
12 KiB
TypeScript
import { Sequelize } from 'sequelize';
|
|
import config from '../../common/config/database.js';
|
|
|
|
// Import individual model factories
|
|
|
|
// Core
|
|
import createUser from './core/User.js';
|
|
import createRole from './core/Role.js';
|
|
import createPermission from './core/Permission.js';
|
|
import createRolePermission from './core/RolePermission.js';
|
|
import createUserRole from './core/UserRole.js';
|
|
import createSystemConfiguration from './core/SystemConfiguration.js';
|
|
import createEmailTemplate from './core/EmailTemplate.js';
|
|
import createPushSubscription from './core/PushSubscription.js';
|
|
import createNotification from './core/Notification.js';
|
|
import createState from './core/State.js';
|
|
import createDistrict from './core/District.js';
|
|
import createRegion from './core/Region.js';
|
|
import createZone from './core/Zone.js';
|
|
import createLocation from './core/Location.js';
|
|
|
|
// Application
|
|
import createApplication from './application/Application.js';
|
|
import createApplicationProgress from './application/ApplicationProgress.js';
|
|
import createApplicationStatusHistory from './application/ApplicationStatusHistory.js';
|
|
import createOpportunity from './application/Opportunity.js';
|
|
import createOnboardingDocument from './application/OnboardingDocument.js';
|
|
import createDocumentVersion from './application/DocumentVersion.js';
|
|
|
|
// Dealer
|
|
import createDealer from './dealer/Dealer.js';
|
|
import createDealerCode from './dealer/DealerCode.js';
|
|
import createDealerBankDetail from './dealer/DealerBankDetail.js';
|
|
import createOutlet from './dealer/Outlet.js';
|
|
|
|
// Verification
|
|
import createInterview from './verification/Interview.js';
|
|
import createInterviewEvaluation from './verification/InterviewEvaluation.js';
|
|
import createInterviewFeedback from './verification/InterviewFeedback.js';
|
|
import createInterviewParticipant from './verification/InterviewParticipant.js';
|
|
import createQuestionnaire from './verification/Questionnaire.js';
|
|
import createQuestionnaireOption from './verification/QuestionnaireOption.js';
|
|
import createQuestionnaireQuestion from './verification/QuestionnaireQuestion.js';
|
|
import createQuestionnaireResponse from './verification/QuestionnaireResponse.js';
|
|
import createQuestionnaireScore from './verification/QuestionnaireScore.js';
|
|
import createKTMatrixScore from './verification/KTMatrixScore.js';
|
|
import createInterviewConfig from './verification/InterviewConfig.js';
|
|
import createInterviewConfigItem from './verification/InterviewConfigItem.js';
|
|
import createInterviewConfigItemOption from './verification/InterviewConfigItemOption.js';
|
|
import createAiSummary from './verification/AiSummary.js';
|
|
import createFddAssignment from './verification/FddAssignment.js';
|
|
import createFddReport from './verification/FddReport.js';
|
|
|
|
// Approval
|
|
import createLoiRequest from './approval/LoiRequest.js';
|
|
import createLoiApproval from './approval/LoiApproval.js';
|
|
import createLoiAcknowledgement from './approval/LoiAcknowledgement.js';
|
|
import createLoiDocumentGenerated from './approval/LoiDocumentGenerated.js';
|
|
import createLoaRequest from './approval/LoaRequest.js';
|
|
import createLoaApproval from './approval/LoaApproval.js';
|
|
import createLoaAcknowledgement from './approval/LoaAcknowledgement.js';
|
|
import createLoaDocumentGenerated from './approval/LoaDocumentGenerated.js';
|
|
import createSecurityDeposit from './approval/SecurityDeposit.js';
|
|
|
|
// Offboarding
|
|
import createTerminationRequest from './offboarding/termination/TerminationRequest.js';
|
|
import createTerminationAudit from './offboarding/termination/TerminationAudit.js';
|
|
import createTerminationDocument from './offboarding/termination/TerminationDocument.js';
|
|
import createTerminationHearingRecord from './offboarding/termination/TerminationHearingRecord.js';
|
|
import createTerminationScnResponse from './offboarding/termination/TerminationScnResponse.js';
|
|
import createResignation from './offboarding/resignation/Resignation.js';
|
|
import createResignationAudit from './offboarding/resignation/ResignationAudit.js';
|
|
import createResignationDocument from './offboarding/resignation/ResignationDocument.js';
|
|
import createRelocationRequest from './offboarding/relocation/RelocationRequest.js';
|
|
import createRelocationAudit from './offboarding/relocation/RelocationAudit.js';
|
|
import createRelocationDocument from './offboarding/relocation/RelocationDocument.js';
|
|
import createConstitutionalChange from './offboarding/constitutional/ConstitutionalChange.js';
|
|
import createConstitutionalAudit from './offboarding/constitutional/ConstitutionalAudit.js';
|
|
import createConstitutionalDocument from './offboarding/constitutional/ConstitutionalDocument.js';
|
|
import createExitFeedback from './offboarding/common/ExitFeedback.js';
|
|
|
|
// Financial
|
|
import createFnF from './financial/FnF.js';
|
|
import createFnFAudit from './financial/FnFAudit.js';
|
|
import createFnFLineItem from './financial/FnFLineItem.js';
|
|
import createFffClearance from './financial/FffClearance.js';
|
|
import createFinancePayment from './financial/FinancePayment.js';
|
|
|
|
// Compliance
|
|
import createEorChecklist from './compliance/EorChecklist.js';
|
|
import createEorChecklistItem from './compliance/EorChecklistItem.js';
|
|
import createSLAConfiguration from './compliance/SLAConfiguration.js';
|
|
import createSLABreach from './compliance/SLABreach.js';
|
|
import createSLAEscalationConfig from './compliance/SLAEscalationConfig.js';
|
|
import createSLAReminder from './compliance/SLAReminder.js';
|
|
import createSLATracking from './compliance/SLATracking.js';
|
|
import createWorkflowStageConfig from './compliance/WorkflowStageConfig.js';
|
|
import createStageApprovalAction from './compliance/StageApprovalAction.js';
|
|
import createStageApprovalPolicy from './compliance/StageApprovalPolicy.js';
|
|
import createDocumentStageConfig from './compliance/DocumentStageConfig.js';
|
|
import createRequestParticipant from './compliance/RequestParticipant.js';
|
|
|
|
// Activity
|
|
import createAuditLog from './activity/AuditLog.js';
|
|
import createWorknote from './activity/Worknote.js';
|
|
import createWorkNoteAttachment from './activity/WorkNoteAttachment.js';
|
|
import createWorkNoteTag from './activity/WorkNoteTag.js';
|
|
|
|
const env = process.env.NODE_ENV || 'development';
|
|
const dbConfig = config[env];
|
|
|
|
// Initialize Sequelize
|
|
const sequelize = new Sequelize(
|
|
dbConfig.database!,
|
|
dbConfig.username!,
|
|
dbConfig.password!,
|
|
{
|
|
host: dbConfig.host,
|
|
port: dbConfig.port as number,
|
|
dialect: dbConfig.dialect as any,
|
|
logging: dbConfig.logging,
|
|
pool: dbConfig.pool,
|
|
dialectOptions: dbConfig.dialectOptions
|
|
}
|
|
);
|
|
|
|
const db: any = {};
|
|
|
|
// Initialize models
|
|
db.User = createUser(sequelize);
|
|
db.Application = createApplication(sequelize);
|
|
db.Resignation = createResignation(sequelize);
|
|
db.ConstitutionalChange = createConstitutionalChange(sequelize);
|
|
db.RelocationRequest = createRelocationRequest(sequelize);
|
|
db.Outlet = createOutlet(sequelize);
|
|
db.Worknote = createWorknote(sequelize);
|
|
db.OnboardingDocument = createOnboardingDocument(sequelize);
|
|
db.AuditLog = createAuditLog(sequelize);
|
|
db.FinancePayment = createFinancePayment(sequelize);
|
|
db.RelocationDocument = createRelocationDocument(sequelize);
|
|
db.ResignationDocument = createResignationDocument(sequelize);
|
|
db.ConstitutionalDocument = createConstitutionalDocument(sequelize);
|
|
db.TerminationDocument = createTerminationDocument(sequelize);
|
|
db.FnF = createFnF(sequelize);
|
|
db.FnFLineItem = createFnFLineItem(sequelize);
|
|
db.SLAConfiguration = createSLAConfiguration(sequelize);
|
|
db.SLAReminder = createSLAReminder(sequelize);
|
|
db.SLAEscalationConfig = createSLAEscalationConfig(sequelize);
|
|
db.WorkflowStageConfig = createWorkflowStageConfig(sequelize);
|
|
db.Notification = createNotification(sequelize);
|
|
db.DocumentStageConfig = createDocumentStageConfig(sequelize);
|
|
db.District = createDistrict(sequelize);
|
|
db.Location = createLocation(sequelize);
|
|
db.Zone = createZone(sequelize);
|
|
db.Region = createRegion(sequelize);
|
|
db.State = createState(sequelize);
|
|
db.TerminationScnResponse = createTerminationScnResponse(sequelize);
|
|
db.TerminationHearingRecord = createTerminationHearingRecord(sequelize);
|
|
db.FffClearance = createFffClearance(sequelize);
|
|
db.ResignationAudit = createResignationAudit(sequelize);
|
|
db.TerminationAudit = createTerminationAudit(sequelize);
|
|
db.FnFAudit = createFnFAudit(sequelize);
|
|
db.ConstitutionalAudit = createConstitutionalAudit(sequelize);
|
|
db.RelocationAudit = createRelocationAudit(sequelize);
|
|
|
|
// Batch 1: Organizational Hierarchy & User Management
|
|
db.Role = createRole(sequelize);
|
|
db.Permission = createPermission(sequelize);
|
|
db.RolePermission = createRolePermission(sequelize);
|
|
db.UserRole = createUserRole(sequelize);
|
|
|
|
// Batch 2: Opportunity & Application Framework
|
|
db.Opportunity = createOpportunity(sequelize);
|
|
db.ApplicationStatusHistory = createApplicationStatusHistory(sequelize);
|
|
db.ApplicationProgress = createApplicationProgress(sequelize);
|
|
|
|
// Batch 3: Questionnaire & Interview Systems
|
|
db.Questionnaire = createQuestionnaire(sequelize);
|
|
db.QuestionnaireQuestion = createQuestionnaireQuestion(sequelize);
|
|
db.QuestionnaireOption = createQuestionnaireOption(sequelize);
|
|
db.QuestionnaireResponse = createQuestionnaireResponse(sequelize);
|
|
db.QuestionnaireScore = createQuestionnaireScore(sequelize);
|
|
db.Interview = createInterview(sequelize);
|
|
db.InterviewParticipant = createInterviewParticipant(sequelize);
|
|
db.InterviewEvaluation = createInterviewEvaluation(sequelize);
|
|
db.KTMatrixScore = createKTMatrixScore(sequelize);
|
|
db.InterviewFeedback = createInterviewFeedback(sequelize);
|
|
db.InterviewConfig = createInterviewConfig(sequelize);
|
|
db.InterviewConfigItem = createInterviewConfigItem(sequelize);
|
|
db.InterviewConfigItemOption = createInterviewConfigItemOption(sequelize);
|
|
db.AiSummary = createAiSummary(sequelize);
|
|
|
|
// Batch 4: Dealer Entity, Documents & Work Notes
|
|
db.Dealer = createDealer(sequelize);
|
|
db.DealerCode = createDealerCode(sequelize);
|
|
db.DealerBankDetail = createDealerBankDetail(sequelize);
|
|
db.DocumentVersion = createDocumentVersion(sequelize);
|
|
db.WorkNoteTag = createWorkNoteTag(sequelize);
|
|
db.WorkNoteAttachment = createWorkNoteAttachment(sequelize);
|
|
db.RequestParticipant = createRequestParticipant(sequelize);
|
|
|
|
// Batch 5: FDD, LOI, LOA, EOR & Security Deposit
|
|
db.FddAssignment = createFddAssignment(sequelize);
|
|
db.FddReport = createFddReport(sequelize);
|
|
db.LoiRequest = createLoiRequest(sequelize);
|
|
db.LoiApproval = createLoiApproval(sequelize);
|
|
db.LoiDocumentGenerated = createLoiDocumentGenerated(sequelize);
|
|
db.LoiAcknowledgement = createLoiAcknowledgement(sequelize);
|
|
db.SecurityDeposit = createSecurityDeposit(sequelize);
|
|
db.LoaRequest = createLoaRequest(sequelize);
|
|
db.LoaApproval = createLoaApproval(sequelize);
|
|
db.LoaDocumentGenerated = createLoaDocumentGenerated(sequelize);
|
|
db.LoaAcknowledgement = createLoaAcknowledgement(sequelize);
|
|
db.EorChecklist = createEorChecklist(sequelize);
|
|
db.EorChecklistItem = createEorChecklistItem(sequelize);
|
|
|
|
// Batch 6: Offboarding & F&F Settlement
|
|
db.TerminationRequest = createTerminationRequest(sequelize);
|
|
db.ExitFeedback = createExitFeedback(sequelize);
|
|
|
|
// Batch 7: Notifications, Logs & Templates
|
|
db.EmailTemplate = createEmailTemplate(sequelize);
|
|
db.PushSubscription = createPushSubscription(sequelize);
|
|
|
|
// Batch 8: SLA & TAT Tracking
|
|
db.SLATracking = createSLATracking(sequelize);
|
|
db.SLABreach = createSLABreach(sequelize);
|
|
db.StageApprovalPolicy = createStageApprovalPolicy(sequelize);
|
|
db.StageApprovalAction = createStageApprovalAction(sequelize);
|
|
db.SystemConfiguration = createSystemConfiguration(sequelize);
|
|
|
|
// Define associations
|
|
Object.keys(db).forEach((modelName) => {
|
|
if (db[modelName].associate) {
|
|
db[modelName].associate(db);
|
|
}
|
|
});
|
|
|
|
db.sequelize = sequelize;
|
|
db.Sequelize = Sequelize;
|
|
|
|
export default db;
|
|
export { sequelize, Sequelize };
|