diff --git a/db/seeders/role.seeder.ts b/db/seeders/role.seeder.ts new file mode 100644 index 0000000..ef886a3 --- /dev/null +++ b/db/seeders/role.seeder.ts @@ -0,0 +1,3 @@ +import { RoleEnum } from "../../src/modules/users/enums/role.enum"; + +export const roles = [{ name: RoleEnum.SUPER_ADMIN }, { name: RoleEnum.ADMIN }, { name: RoleEnum.VISITOR }, { name: RoleEnum.USER }]; diff --git a/src/modules/users/providers/roles.repository.ts b/src/modules/users/providers/roles.repository.ts new file mode 100644 index 0000000..b5a56bc --- /dev/null +++ b/src/modules/users/providers/roles.repository.ts @@ -0,0 +1,12 @@ +import { Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { Repository } from "typeorm"; + +import { Role } from "../entities/role.entity"; + +@Injectable() +export class RoleRepository extends Repository { + constructor(@InjectRepository(Role) roleRepository: Repository) { + super(roleRepository.target, roleRepository.manager, roleRepository.queryRunner); + } +} diff --git a/src/modules/users/providers/users.service.ts b/src/modules/users/providers/users.service.ts index a1efb05..55ec65e 100644 --- a/src/modules/users/providers/users.service.ts +++ b/src/modules/users/providers/users.service.ts @@ -1,16 +1,28 @@ -import { BadRequestException, Injectable } from "@nestjs/common"; +import { BadRequestException, Injectable, Logger } from "@nestjs/common"; import { UserRepository } from "./users.repository"; import { User } from "../entities/user.entity"; import { UserMessage } from "../../../common/enums/message.enum"; +import { RoleRepository } from "./roles.repository"; +import { roles } from "../../../../db/seeders/role.seeder"; @Injectable() export class UsersService { - constructor(private userRepository: UserRepository) {} + private logger = new Logger(UsersService.name); + constructor( + private userRepository: UserRepository, + private roleRepository: RoleRepository, + ) {} async findOneWithEmail(email: string): Promise { const user = await this.userRepository.findOneWithEmail(email); if (!user) throw new BadRequestException(UserMessage.USER_NOT_FOUND); return user; } + + async roleSeeder() { + const createdRoles = await this.roleRepository.insert(roles); + this.logger.log({ createdRoles }); + return createdRoles; + } } diff --git a/src/modules/users/users.module.ts b/src/modules/users/users.module.ts index 7838abc..f251cce 100644 --- a/src/modules/users/users.module.ts +++ b/src/modules/users/users.module.ts @@ -1,4 +1,4 @@ -import { Module } from "@nestjs/common"; +import { Module, OnApplicationBootstrap } from "@nestjs/common"; import { TypeOrmModule } from "@nestjs/typeorm"; import { Role } from "./entities/role.entity"; @@ -6,11 +6,17 @@ import { User } from "./entities/user.entity"; import { UserRepository } from "./providers/users.repository"; import { UsersService } from "./providers/users.service"; import { UsersController } from "./users.controller"; +import { RoleRepository } from "./providers/roles.repository"; @Module({ imports: [TypeOrmModule.forFeature([User, Role])], - providers: [UsersService, UserRepository], + providers: [UsersService, UserRepository, RoleRepository], controllers: [UsersController], exports: [UsersService, TypeOrmModule], }) -export class UsersModule {} +export class UsersModule implements OnApplicationBootstrap { + constructor(private userService: UsersService) {} + async onApplicationBootstrap() { + await this.userService.roleSeeder(); + } +}