Skip to content

Commit 7dc2bcf

Browse files
committed
set roleid while creating user
1 parent a184906 commit 7dc2bcf

File tree

5 files changed

+26
-5
lines changed

5 files changed

+26
-5
lines changed

Projects/BooksLibrary/src/api/validators/user.validator.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export class UserValidator {
2727
LastName: request.body.LastName,
2828
Email: request.body.Email,
2929
Password: request.body.Password,
30+
RoleId: request.body.RoleId ?? null,
3031
};
3132

3233
return createUserDomainModel;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export class UserRepo implements IUserRepo {
1313
LastName: userDetails.LastName,
1414
Email: userDetails.Email,
1515
Password: userDetails.Password,
16-
RoleId: '',
16+
RoleId: userDetails.RoleId,
1717
};
1818

1919
const user: User = await User.create(entity);

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ApiError } from 'common/api.error';
22
import { Logger } from 'common/logger';
33
import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface';
44
import { RoleDto } from 'domain.types/role/role.dto';
5+
import { Roles } from 'domain.types/role/role.types';
6+
import { Op } from 'sequelize/types';
57
import { RoleMapper } from '../mapper/user.role.mapper';
68
import Role from '../models/role.model';
79

@@ -24,7 +26,19 @@ export class UserRoleRepo implements IRoleRepo {
2426
throw new Error('Method not implemented.');
2527
}
2628

27-
getByName(name: string): Promise<RoleDto> {
28-
throw new Error('Method not implemented.');
29-
}
29+
getByName = async (name: Roles): Promise<RoleDto> => {
30+
try {
31+
// select * from Role where RoleName='User' limit 1;
32+
const role = await Role.findOne({
33+
where: {
34+
RoleName: name,
35+
},
36+
});
37+
const dto = RoleMapper.toDto(role);
38+
return dto;
39+
} catch (error) {
40+
Logger.instance().log(error.message);
41+
throw new ApiError(500, error.message);
42+
}
43+
};
3044
}

Projects/BooksLibrary/src/domain.types/user/user.domain.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ export interface UserDomainModel {
55
LastName: string;
66
Email: string;
77
Password: string;
8+
RoleId: string;
89
}

Projects/BooksLibrary/src/services/user.service.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface';
2+
import { RoleDto } from 'domain.types/role/role.dto';
3+
import { Roles } from 'domain.types/role/role.types';
14
import { UserDomainModel } from 'domain.types/user/user.domain.model';
25
import { UserDetailsDto } from 'domain.types/user/user.dto';
36
import { inject, injectable } from 'tsyringe';
47
import { IUserRepo } from '../database/repository.interfaces/user.repo.intrerface';
58

69
@injectable()
710
export class UserService {
8-
constructor(@inject('IUserRepo') private _userRepo: IUserRepo) {}
11+
constructor(@inject('IUserRepo') private _userRepo: IUserRepo, @inject('IRoleRepo') private _roleRepo: IRoleRepo) {}
912

1013
create = async (userDetails: UserDomainModel): Promise<UserDetailsDto> => {
14+
const userRole: RoleDto = await this._roleRepo.getByName(Roles.User);
15+
userDetails.RoleId = userRole.id;
1116
const userDetailsDto: UserDetailsDto = await this._userRepo.createUser(userDetails);
1217

1318
return userDetailsDto;

0 commit comments

Comments
 (0)