mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
67 lines
2.6 KiB
TypeScript
67 lines
2.6 KiB
TypeScript
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);
|
|
|
|
// Each bucket is independent: a seeder that has drifted from the current
|
|
// schema shouldn't stop the rest of the demo data from landing.
|
|
const step = async (name: string, run: () => Promise<void>) => {
|
|
try {
|
|
await run();
|
|
} catch (error) {
|
|
console.warn(` ! ${name} skipped: ${error instanceof Error ? error.message : String(error)}`);
|
|
}
|
|
};
|
|
|
|
await step('PricingDataSeeder', () => new PricingDataSeeder(dataSource).run());
|
|
await step('IndodeFacilitySeeder', () => new IndodeFacilitySeeder(dataSource).run());
|
|
await step('Batch14TestDataSeeder', () => new Batch14TestDataSeeder(dataSource).run());
|
|
await step('Batch5TestDataSeeder', () => new Batch5TestDataSeeder(dataSource).run());
|
|
await step('Batch7TestDataSeeder', () => new Batch7TestDataSeeder(dataSource).run());
|
|
await step('Batch8TestDataSeeder', () => new Batch8TestDataSeeder(dataSource).run());
|
|
await step('WarehouseDemoSeeder', () => 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);
|
|
});
|