|
1 | 1 | import { Logger } from 'common/logger'; |
| 2 | +import { IUserRepo } from 'database/repository.interfaces/user.repo.intrerface'; |
2 | 3 | import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface'; |
3 | 4 | import { RoleDto } from 'domain.types/role/role.dto'; |
4 | 5 | import { Roles } from 'domain.types/role/role.types'; |
| 6 | +import { UserDomainModel } from 'domain.types/user/user.domain.model'; |
| 7 | +import { UserDetailsDto } from 'domain.types/user/user.dto'; |
5 | 8 | import { inject, injectable } from 'tsyringe'; |
6 | 9 |
|
7 | 10 | @injectable() |
8 | 11 | export class Seeder { |
9 | | - constructor(@inject('IRoleRepo') private _roleRepo: IRoleRepo) {} |
| 12 | + constructor(@inject('IUserRepo') private _userRepo: IUserRepo, @inject('IRoleRepo') private _roleRepo: IRoleRepo) {} |
10 | 13 |
|
11 | 14 | public init = async (): Promise<void> => { |
12 | 15 | try { |
13 | 16 | await this.seedDefaultRoles(); |
| 17 | + await this.seedDefaultAdmin(); |
14 | 18 | } catch (error) { |
15 | 19 | Logger.instance().log(error.message); |
16 | 20 | } |
17 | 21 | }; |
18 | 22 |
|
| 23 | + seedDefaultAdmin = async () => { |
| 24 | + const adminRole: RoleDto = await this._roleRepo.getByName(Roles.Admin); |
| 25 | + const admins: UserDetailsDto[] = await this._userRepo.findUsersByRoleId(adminRole.id); |
| 26 | + if (admins.length > 0) { |
| 27 | + return; |
| 28 | + } |
| 29 | + const admin: UserDomainModel = { |
| 30 | + Prefix: 'Mr.', |
| 31 | + FirstName: 'Kiran', |
| 32 | + MiddleName: '', |
| 33 | + LastName: 'Kharade', |
| 34 | + Email: 'Kiran.kharade@yopmail.com', |
| 35 | + Password: 'Test@123', |
| 36 | + RoleId: adminRole.id, |
| 37 | + }; |
| 38 | + |
| 39 | + await this._userRepo.createUser(admin); |
| 40 | + }; |
| 41 | + |
19 | 42 | seedDefaultRoles = async () => { |
20 | 43 | const existing: RoleDto[] = await this._roleRepo.search(); |
21 | 44 | if (existing.length > 0) { |
|
0 commit comments