Dealer_Onboarding_Backend/scripts/seed-approval-policies.ts

82 lines
1.9 KiB
TypeScript

import 'dotenv/config';
import db from '../src/database/models/index.js';
const { StageApprovalPolicy } = db;
const policies = [
{
stageCode: 'INTERVIEW_LEVEL_1',
minApprovals: 2,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['DD-ZM', 'RBM'],
isActive: true
},
{
stageCode: 'INTERVIEW_LEVEL_2',
minApprovals: 2,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['ZBH', 'DD Lead'],
isActive: true
},
{
stageCode: 'INTERVIEW_LEVEL_3',
minApprovals: 2,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['NBH', 'DD Head'],
isActive: true
},
{
stageCode: 'LOI_APPROVAL',
minApprovals: 3,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['Finance', 'DD Head', 'NBH'],
isActive: true
},
{
stageCode: 'LOA_APPROVAL',
minApprovals: 2,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['DD Head', 'NBH'],
isActive: true
},
{
stageCode: 'FDD_VERIFICATION',
minApprovals: 1,
approvalMode: 'ROLE_MANDATORY',
requiredRoles: ['FDD'],
isActive: true
}
];
async function seedApprovalPolicies() {
console.log('--- Seeding Approval Policies ---');
for (const policy of policies) {
const [record, created] = await StageApprovalPolicy.findOrCreate({
where: { stageCode: policy.stageCode },
defaults: policy
});
if (!created) {
await record.update({
minApprovals: policy.minApprovals,
approvalMode: policy.approvalMode,
requiredRoles: policy.requiredRoles,
isActive: policy.isActive
});
console.log(`Updated policy: ${policy.stageCode}`);
} else {
console.log(`Created policy: ${policy.stageCode}`);
}
}
console.log('--- Approval Policies Seeded ---');
}
seedApprovalPolicies()
.catch((error) => {
console.error('Approval policy seed failed:', error);
process.exit(1);
})
.then(() => process.exit(0));