import 'reflect-metadata'; import { config } from 'dotenv'; import { resolve } from 'path'; config({ path: resolve(__dirname, '../../.env') }); import { NestFactory } from '@nestjs/core'; import { DataSource } from 'typeorm'; import { AppModule } from '../app.module'; import { Batch14TestDataSeeder } from '../seed/batch1-4-test-data.seeder'; import { Batch5TestDataSeeder } from '../seed/batch5-test-data.seeder'; import { Batch7TestDataSeeder } from '../seed/batch7-test-data.seeder'; import { Batch8TestDataSeeder } from '../seed/batch8-test-data.seeder'; import { IndodeFacilitySeeder } from '../seed/indode-facility.seeder'; import { PricingDataSeeder } from '../seed/pricing-data.seeder'; import { WarehouseDemoSeeder } from '../seed/warehouse-demo.seeder'; /** Demo data only — refuse to run against anything but a local dev database. */ function assertLocalhost() { const host = process.env.DB_HOST ?? 'localhost'; if (host !== 'localhost' && host !== '127.0.0.1') { console.error(`Refusing to seed demo data: DB_HOST is "${host}", not localhost.`); process.exit(1); } } async function main() { assertLocalhost(); const app = await NestFactory.createApplicationContext(AppModule, { logger: ['error', 'warn', 'log'], }); try { // Demo seeders are intentionally not AppModule providers (they'd run on every // boot), so construct them against the app's DataSource instead of via DI. const dataSource = app.get(DataSource); await new PricingDataSeeder(dataSource).run(); await new IndodeFacilitySeeder(dataSource).run(); await new Batch14TestDataSeeder(dataSource).run(); await new Batch5TestDataSeeder(dataSource).run(); await new Batch7TestDataSeeder(dataSource).run(); await new Batch8TestDataSeeder(dataSource).run(); await new WarehouseDemoSeeder(dataSource).run(); console.log('Warehouse demo data seeded.'); } finally { await app.close(); } } main().catch((err) => { console.error('Warehouse demo seed failed:', err); process.exit(1); });