Files
gongxue-base/apps/server/src/seed/seed.module.ts

59 lines
1.9 KiB
TypeScript

import { Module, OnModuleInit, Logger } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SeedDevService } from './seed-dev.service';
import {
Student, Room, Occupancy, RoomExpense,
Bill, BillItem, User, Deposit,
Classroom, Tenant, ClassroomRental, Permission, Role,
Class, ClassStudent, ClassTeacher, ClassSchedule,
AttendanceRecord, Department, UserDepartment,
StudentProfile, StudentEnrollment, ExamScore, LearningRecord,
ExpenseType,
} from '../entities';
const SEED_ENTITIES = [
Department, User, Role, Permission, UserDepartment,
Tenant, Student, Room, Classroom, Occupancy,
RoomExpense, ExpenseType, Class,
ClassStudent, ClassTeacher, ClassSchedule, Bill, BillItem,
Deposit, AttendanceRecord,
ClassroomRental, StudentProfile, StudentEnrollment,
ExamScore, LearningRecord,
];
@Module({
imports: [TypeOrmModule.forFeature(SEED_ENTITIES)],
providers: [SeedDevService],
})
export class SeedModule implements OnModuleInit {
private readonly logger = new Logger(SeedModule.name);
constructor(private readonly seedService: SeedDevService) {}
async onModuleInit() {
const enabled = process.env['SEED_DEV'] === 'true';
const skip = process.env['SEED_DEV_SKIP'] === 'true';
if (!enabled || skip) {
this.logger.log(
`Seed skipped: SEED_DEV=${process.env['SEED_DEV']}, NODE_ENV=${process.env['NODE_ENV']}, SKIP=${skip}`,
);
return;
}
const studentCount = await this.seedService.getStudentCount();
if (studentCount > 0) {
this.logger.log(`Seed skipped: ${studentCount} students already exist`);
return;
}
this.logger.log('Starting mock data seeding...');
try {
await this.seedService.seed();
this.logger.log('Mock data seeding completed successfully');
} catch (err) {
this.logger.error('Mock data seeding failed', err instanceof Error ? err.stack : String(err));
}
}
}