Skip to content

Commit 12cfe69

Browse files
committed
register admin through seeder
1 parent 000cd5d commit 12cfe69

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

Projects/BooksLibrary/src/database/repository.interfaces/user.repo.intrerface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ import { UserDomainModel } from 'domain.types/user/user.domain.model';
22
import { UserDetailsDto } from 'domain.types/user/user.dto';
33

44
export interface IUserRepo {
5+
findUsersByRoleId(id: string): Promise<UserDetailsDto[]>;
56
createUser(userDetails: UserDomainModel): Promise<UserDetailsDto>;
67
}

Projects/BooksLibrary/src/database/sql/sequelize/repositories/user.repo.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ import { UserMapper } from '../mapper/user.mapper';
55
import User from '../models/user.model';
66

77
export class UserRepo implements IUserRepo {
8+
async findUsersByRoleId(roleid: string): Promise<UserDetailsDto[]> {
9+
const users: User[] = await User.findAll({
10+
where: {
11+
RoleId: roleid,
12+
},
13+
});
14+
15+
const temp: Promise<UserDetailsDto>[] = users.map(async (user) => await UserMapper.toDetailsDto(user));
16+
17+
const userDetailsDto: UserDetailsDto[] = await Promise.all(temp);
18+
19+
return userDetailsDto;
20+
}
21+
822
async createUser(userDetails: UserDomainModel): Promise<UserDetailsDto> {
923
const entity = {
1024
Prefix: userDetails.Prefix,

Projects/BooksLibrary/src/startup/seeder.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,44 @@
11
import { Logger } from 'common/logger';
2+
import { IUserRepo } from 'database/repository.interfaces/user.repo.intrerface';
23
import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface';
34
import { RoleDto } from 'domain.types/role/role.dto';
45
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';
58
import { inject, injectable } from 'tsyringe';
69

710
@injectable()
811
export class Seeder {
9-
constructor(@inject('IRoleRepo') private _roleRepo: IRoleRepo) {}
12+
constructor(@inject('IUserRepo') private _userRepo: IUserRepo, @inject('IRoleRepo') private _roleRepo: IRoleRepo) {}
1013

1114
public init = async (): Promise<void> => {
1215
try {
1316
await this.seedDefaultRoles();
17+
await this.seedDefaultAdmin();
1418
} catch (error) {
1519
Logger.instance().log(error.message);
1620
}
1721
};
1822

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+
1942
seedDefaultRoles = async () => {
2043
const existing: RoleDto[] = await this._roleRepo.search();
2144
if (existing.length > 0) {

0 commit comments

Comments
 (0)