import { EntityManager, RequiredEntityData } from "@mikro-orm/postgresql"; import { Seeder } from "@mikro-orm/seeder"; import { Logger } from "@nestjs/common"; import { Role } from "../../src/modules/users/entities/role.entity"; import { RoleEnum } from "../../src/modules/users/enums/role.enum"; export class RoleSeeder extends Seeder { private readonly logger = new Logger(RoleSeeder.name); async run(em: EntityManager): Promise { const roles: RequiredEntityData[] = [ { name: RoleEnum.ADMIN, createdAt: new Date(), updatedAt: new Date(), }, { name: RoleEnum.USER, createdAt: new Date(), updatedAt: new Date(), }, ]; for (const roleData of roles) { const existingRole = await em.findOne(Role, { name: roleData.name }); if (!existingRole) { const role = em.create(Role, roleData); await em.persistAndFlush(role); this.logger.log(`[RoleSeeder] Created role: ${roleData.name}`); } else { this.logger.log(`[RoleSeeder] Role already exists: ${roleData.name}`); } } } }