Dealer_Onboarding_Backend/src/database/models/index.ts

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 };