131 lines
4.0 KiB
JavaScript
131 lines
4.0 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
/**
|
||
* Validation script to ensure partner field naming consistency
|
||
* Run this script to verify all models are properly configured
|
||
*
|
||
* Usage:
|
||
* node scripts/validate_partner_fields.js [--env <path>]
|
||
*
|
||
* Options:
|
||
* --env <path> Path to environment file (default: ./environment.env)
|
||
*/
|
||
|
||
'use strict';
|
||
|
||
const path = require('path');
|
||
|
||
// Parse command line arguments
|
||
const args = process.argv.slice(2);
|
||
let envFile = './environment.env';
|
||
|
||
for (let i = 0; i < args.length; i++) {
|
||
if (args[i] === '--env' && args[i + 1]) {
|
||
envFile = args[i + 1];
|
||
i++;
|
||
}
|
||
}
|
||
|
||
// Load environment variables
|
||
const envPath = path.resolve(process.cwd(), envFile);
|
||
console.log(`Loading environment from: ${envPath}`);
|
||
require('dotenv').config({ path: envPath });
|
||
|
||
const { DBConnection } = require('../helpers/db/connect');
|
||
|
||
// Initialize database connection
|
||
const db = new DBConnection('Partner Field Validation');
|
||
|
||
async function validatePartnerFields() {
|
||
try {
|
||
await db.initialize({ setupExitHandlers: false });
|
||
|
||
const { Partner, PartnerSystemUser } = require('../model/partner');
|
||
const Customer = require('../model/customer');
|
||
const User = require('../model/user');
|
||
const Vehicle = require('../model/vehicle');
|
||
|
||
console.log('🔍 Validating Partner Field Consistency...\n');
|
||
|
||
// Validate schema definitions
|
||
console.log('📋 Checking Schema Definitions:');
|
||
|
||
// Check PartnerSystemUser schema
|
||
const partnerSystemUserSchema = PartnerSystemUser.schema;
|
||
const hasPartnerField = partnerSystemUserSchema.paths.partner;
|
||
|
||
console.log(' ✅ PartnerSystemUser.partner field:', hasPartnerField ? 'EXISTS' : 'MISSING');
|
||
|
||
// Check Customer schema
|
||
const customerSchema = Customer.schema;
|
||
const customerPartnerField = customerSchema.paths.partner;
|
||
|
||
console.log(' ✅ Customer.partner field:', customerPartnerField ? 'EXISTS' : 'MISSING');
|
||
|
||
// Check User schema
|
||
const userSchema = User.schema;
|
||
const userPartnerField = userSchema.paths.partner;
|
||
|
||
console.log(' ✅ User.partner field:', userPartnerField ? 'EXISTS' : 'MISSING');
|
||
|
||
// Check Vehicle schema
|
||
const vehicleSchema = Vehicle.schema;
|
||
const vehiclePartnerField = vehicleSchema.paths.partner;
|
||
|
||
console.log(' ✅ Vehicle.partner field:', vehiclePartnerField ? 'EXISTS' : 'MISSING');
|
||
|
||
console.log('\n📊 Field Configuration Summary:');
|
||
|
||
// Test populate queries work
|
||
console.log(' 🔗 Testing populate queries...');
|
||
|
||
try {
|
||
// Test PartnerSystemUser populate
|
||
await PartnerSystemUser.findOne({}).populate('partner').lean();
|
||
console.log(' ✅ PartnerSystemUser.populate("partner") - SUCCESS');
|
||
} catch (err) {
|
||
console.log(' ❌ PartnerSystemUser.populate("partner") - FAILED:', err.message);
|
||
}
|
||
|
||
try {
|
||
// Test Customer populate
|
||
await Customer.findOne({}).populate('partner').lean();
|
||
console.log(' ✅ Customer.populate("partner") - SUCCESS');
|
||
} catch (err) {
|
||
console.log(' ❌ Customer.populate("partner") - FAILED:', err.message);
|
||
}
|
||
|
||
try {
|
||
// Test Vehicle populate
|
||
await Vehicle.findOne({}).populate('partner').lean();
|
||
console.log(' ✅ Vehicle.populate("partner") - SUCCESS');
|
||
} catch (err) {
|
||
console.log(' ❌ Vehicle.populate("partner") - FAILED:', err.message);
|
||
}
|
||
|
||
console.log('\n🎯 Validation Results:');
|
||
|
||
const isValid = hasPartnerField && customerPartnerField && userPartnerField && vehiclePartnerField;
|
||
|
||
if (isValid) {
|
||
console.log(' ✅ All field naming is CONSISTENT');
|
||
console.log(' ✅ All models use "partner" field');
|
||
console.log('\n🎉 Partner field validation PASSED!');
|
||
} else {
|
||
console.log(' ❌ Inconsistent field naming detected');
|
||
console.log(' ❌ Manual review required');
|
||
console.log('\n⚠️ Partner field validation FAILED!');
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('❌ Validation failed:', error.message);
|
||
process.exit(1);
|
||
} finally {
|
||
await db.close();
|
||
process.exit(0);
|
||
}
|
||
}
|
||
|
||
// Run validation
|
||
validatePartnerFields();
|