208 lines
8.5 KiB
TypeScript
208 lines
8.5 KiB
TypeScript
import { Sequelize } from 'sequelize';
|
|
import config from '../../common/config/database.js';
|
|
|
|
// Import individual model factories
|
|
import createUser from './User.js';
|
|
import createApplication from './Application.js';
|
|
import createResignation from './Resignation.js';
|
|
import createConstitutionalChange from './ConstitutionalChange.js';
|
|
import createRelocationRequest from './RelocationRequest.js';
|
|
import createOutlet from './Outlet.js';
|
|
import createWorknote from './Worknote.js';
|
|
import createDocument from './Document.js';
|
|
import createAuditLog from './AuditLog.js';
|
|
import createFinancePayment from './FinancePayment.js';
|
|
import createFnF from './FnF.js';
|
|
import createFnFLineItem from './FnFLineItem.js';
|
|
import createRegion from './Region.js';
|
|
import createZone from './Zone.js';
|
|
import createSLAConfiguration from './SLAConfiguration.js';
|
|
import createSLAReminder from './SLAReminder.js';
|
|
import createSLAEscalationConfig from './SLAEscalationConfig.js';
|
|
import createWorkflowStageConfig from './WorkflowStageConfig.js';
|
|
import createNotification from './Notification.js';
|
|
|
|
// Batch 1: Organizational Hierarchy & User Management
|
|
import createRole from './Role.js';
|
|
import createPermission from './Permission.js';
|
|
import createRolePermission from './RolePermission.js';
|
|
import createState from './State.js';
|
|
import createDistrict from './District.js';
|
|
import createArea from './Area.js';
|
|
import createUserRole from './UserRole.js';
|
|
import createZoneManager from './ZoneManager.js';
|
|
import createRegionManager from './RegionManager.js';
|
|
import createAreaManager from './AreaManager.js';
|
|
import createDistrictManager from './DistrictManager.js';
|
|
|
|
// Batch 2: Opportunity & Application Framework
|
|
import createOpportunity from './Opportunity.js';
|
|
import createApplicationStatusHistory from './ApplicationStatusHistory.js';
|
|
import createApplicationProgress from './ApplicationProgress.js';
|
|
|
|
// Batch 3: Questionnaire & Interview Systems
|
|
import createQuestionnaire from './Questionnaire.js';
|
|
import createQuestionnaireQuestion from './QuestionnaireQuestion.js';
|
|
import createQuestionnaireOption from './QuestionnaireOption.js';
|
|
import createQuestionnaireResponse from './QuestionnaireResponse.js';
|
|
import createQuestionnaireScore from './QuestionnaireScore.js';
|
|
import createInterview from './Interview.js';
|
|
import createInterviewParticipant from './InterviewParticipant.js';
|
|
import createInterviewEvaluation from './InterviewEvaluation.js';
|
|
import createKTMatrixScore from './KTMatrixScore.js';
|
|
import createInterviewFeedback from './InterviewFeedback.js';
|
|
import createAiSummary from './AiSummary.js';
|
|
|
|
// Batch 4: Dealer Entity, Documents & Work Notes
|
|
import createDealer from './Dealer.js';
|
|
import createDealerCode from './DealerCode.js';
|
|
import createDocumentVersion from './DocumentVersion.js';
|
|
import createWorkNoteTag from './WorkNoteTag.js';
|
|
import createWorkNoteAttachment from './WorkNoteAttachment.js';
|
|
import createRequestParticipant from './RequestParticipant.js';
|
|
|
|
// Batch 5: FDD, LOI, LOA, EOR & Security Deposit
|
|
import createFddAssignment from './FddAssignment.js';
|
|
import createFddReport from './FddReport.js';
|
|
import createLoiRequest from './LoiRequest.js';
|
|
import createLoiApproval from './LoiApproval.js';
|
|
import createLoiDocumentGenerated from './LoiDocumentGenerated.js';
|
|
import createLoiAcknowledgement from './LoiAcknowledgement.js';
|
|
import createSecurityDeposit from './SecurityDeposit.js';
|
|
import createLoaRequest from './LoaRequest.js';
|
|
import createLoaApproval from './LoaApproval.js';
|
|
import createLoaDocumentGenerated from './LoaDocumentGenerated.js';
|
|
import createLoaAcknowledgement from './LoaAcknowledgement.js';
|
|
import createEorChecklist from './EorChecklist.js';
|
|
import createEorChecklistItem from './EorChecklistItem.js';
|
|
|
|
// Batch 6: Offboarding & F&F Settlement
|
|
import createTerminationRequest from './TerminationRequest.js';
|
|
import createExitFeedback from './ExitFeedback.js';
|
|
|
|
// Batch 7: Notifications, Logs & Templates
|
|
import createEmailTemplate from './EmailTemplate.js';
|
|
|
|
// Batch 8: SLA & TAT Tracking
|
|
import createSLATracking from './SLATracking.js';
|
|
import createSLABreach from './SLABreach.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.Document = createDocument(sequelize);
|
|
db.AuditLog = createAuditLog(sequelize);
|
|
db.FinancePayment = createFinancePayment(sequelize);
|
|
db.FnF = createFnF(sequelize);
|
|
db.FnFLineItem = createFnFLineItem(sequelize);
|
|
db.Region = createRegion(sequelize);
|
|
db.Zone = createZone(sequelize);
|
|
db.SLAConfiguration = createSLAConfiguration(sequelize);
|
|
db.SLAReminder = createSLAReminder(sequelize);
|
|
db.SLAEscalationConfig = createSLAEscalationConfig(sequelize);
|
|
db.WorkflowStageConfig = createWorkflowStageConfig(sequelize);
|
|
db.Notification = createNotification(sequelize);
|
|
|
|
// Batch 1: Organizational Hierarchy & User Management
|
|
db.Role = createRole(sequelize);
|
|
db.Permission = createPermission(sequelize);
|
|
db.RolePermission = createRolePermission(sequelize);
|
|
db.State = createState(sequelize);
|
|
db.District = createDistrict(sequelize);
|
|
db.Area = createArea(sequelize);
|
|
db.UserRole = createUserRole(sequelize);
|
|
db.ZoneManager = createZoneManager(sequelize);
|
|
db.RegionManager = createRegionManager(sequelize);
|
|
db.AreaManager = createAreaManager(sequelize);
|
|
db.DistrictManager = createDistrictManager(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.AiSummary = createAiSummary(sequelize);
|
|
|
|
// Batch 4: Dealer Entity, Documents & Work Notes
|
|
db.Dealer = createDealer(sequelize);
|
|
db.DealerCode = createDealerCode(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);
|
|
|
|
// Batch 8: SLA & TAT Tracking
|
|
db.SLATracking = createSLATracking(sequelize);
|
|
db.SLABreach = createSLABreach(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 };
|