import 'dotenv/config'; import db from '../src/database/models/index.js'; import { syncLocationManagers, syncRegionManager, syncZoneManager } from '../src/modules/master/syncHierarchy.service.js'; async function syncAll() { console.log('--- Starting Master Hierarchy Synchronization ---'); try { await db.sequelize.authenticate(); console.log('✓ Database connected.'); // 1. Sync all Zones console.log('Syncing Zones...'); const zones = await db.Zone.findAll({ attributes: ['id', 'name'] }); for (const zone of zones) { await syncZoneManager(zone.id); console.log(` - Synced Zone: ${zone.name}`); } // 2. Sync all Regions console.log('Syncing Regions...'); const regions = await db.Region.findAll({ attributes: ['id', 'name'] }); for (const region of regions) { await syncRegionManager(region.id); console.log(` - Synced Region: ${region.name}`); } // 3. Sync all Districts console.log('Syncing Districts (This may take a moment)...'); const locations = await db.District.findAll({ attributes: ['id', 'name'] }); let count = 0; for (const loc of locations) { await syncLocationManagers(loc.id); count++; if (count % 50 === 0) console.log(` - Synced ${count} districts...`); } console.log(`✓ Total Districts Synced: ${count}`); console.log('\n--- Synchronization Complete ---'); process.exit(0); } catch (error) { console.error('❌ Synchronization failed:', error); process.exit(1); } } syncAll();