37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
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<void> {
|
|
const roles: RequiredEntityData<Role>[] = [
|
|
{
|
|
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}`);
|
|
}
|
|
}
|
|
}
|
|
}
|