File tree Expand file tree Collapse file tree 8 files changed +80
-12
lines changed
Projects/BooksLibrary/src Expand file tree Collapse file tree 8 files changed +80
-12
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import { UserValidator } from 'api/validators/user.validator';
22import { Authorizer } from 'auth/authorizer' ;
33import { ResponseHandler } from 'common/response.handler' ;
44import { UserDomainModel } from 'domain.types/user/user.domain.model' ;
5+ import { UserDetailsDto } from 'domain.types/user/user.dto' ;
56import express from 'express' ;
67import { UserService } from 'services/user.service' ;
78import { Loader } from 'startup/loader' ;
@@ -38,16 +39,15 @@ export class UserController {
3839
3940 const domainData : UserDomainModel = await UserValidator . create ( request , response ) ;
4041
41- const apiResponse = await this . _service . create ( domainData ) ;
42+ const userdetails : UserDetailsDto = await this . _service . create ( domainData ) ;
4243
4344 ResponseHandler . success (
4445 request ,
4546 response ,
4647 'User created!' ,
4748 200 ,
4849 {
49- entity : apiResponse ,
50- domainData : domainData ,
50+ entity : userdetails ,
5151 } ,
5252 false
5353 ) ;
Original file line number Diff line number Diff line change 1+ import { UserDomainModel } from 'domain.types/user/user.domain.model' ;
2+ import { UserDetailsDto } from 'domain.types/user/user.dto' ;
3+
4+ export interface IUserRepo {
5+ createUser ( userDetails : UserDomainModel ) : Promise < UserDetailsDto > ;
6+ }
Original file line number Diff line number Diff line change 1+ import { UserDetailsDto } from 'domain.types/user/user.dto' ;
2+ import User from '../models/user.model' ;
3+
4+ export class UserMapper {
5+ static toDetailsDto = async ( entity : User ) : Promise < UserDetailsDto > => {
6+ const dto : UserDetailsDto = {
7+ id : entity . id ,
8+ FirstName : entity . FirstName ,
9+ Prefix : entity . Prefix ,
10+ MiddleName : entity . MiddleName ,
11+ LastName : entity . LastName ,
12+ Email : entity . Email ,
13+ CreatedAt : entity . createdAt ,
14+ UpdatedAt : entity . updatedAt ,
15+ DeletedAt : entity . deletedAt ,
16+ } ;
17+
18+ return dto ;
19+ } ;
20+ }
Original file line number Diff line number Diff line change @@ -81,11 +81,11 @@ export default class User extends Model {
8181 } )
8282 Password : string ;
8383
84- @IsUUID ( 4 )
84+ // @IsUUID (4)
8585 @ForeignKey ( ( ) => Role )
8686 @Column ( {
8787 type : DataType . UUID ,
88- allowNull : false ,
88+ allowNull : true ,
8989 } )
9090 RoleId : string ;
9191
Original file line number Diff line number Diff line change 1+ import { IUserRepo } from 'database/repository.interfaces/user.repo.intrerface' ;
2+ import { UserDomainModel } from 'domain.types/user/user.domain.model' ;
3+ import { UserDetailsDto } from 'domain.types/user/user.dto' ;
4+ import { UserMapper } from '../mapper/user.mapper' ;
5+ import User from '../models/user.model' ;
6+
7+ export class UserRepo implements IUserRepo {
8+ async createUser ( userDetails : UserDomainModel ) : Promise < UserDetailsDto > {
9+ const entity = {
10+ Prefix : userDetails . Prefix ,
11+ FirstName : userDetails . FirstName ,
12+ MiddleName : userDetails . MiddleName ,
13+ LastName : userDetails . LastName ,
14+ Email : userDetails . Email ,
15+ Password : userDetails . Password ,
16+ RoleId : '' ,
17+ } ;
18+
19+ const user : User = await User . create ( entity ) ;
20+ const dto : UserDetailsDto = await UserMapper . toDetailsDto ( user ) ;
21+
22+ return dto ;
23+ }
24+ }
Original file line number Diff line number Diff line change 11import { DependencyContainer } from 'tsyringe' ;
22import { DatabaseConnector_Sequelize } from './sequelize/database.connector.sequelize' ;
3+ import { UserRepo } from './sequelize/repositories/user.repo' ;
34
45export class SQLInjector {
56 static registerInjections ( container : DependencyContainer ) {
67 container . register ( 'IDatabaseConnector' , DatabaseConnector_Sequelize ) ;
8+
9+ container . register ( 'IUserRepo' , UserRepo ) ;
710 }
811}
Original file line number Diff line number Diff line change 1+ export interface UserDetailsDto {
2+ id : string ;
3+ Prefix : string ;
4+ FirstName : string ;
5+ MiddleName : string ;
6+ LastName : string ;
7+ Email : string ;
8+
9+ CreatedAt : Date ;
10+
11+ UpdatedAt : Date ;
12+
13+ DeletedAt : Date ;
14+ }
Original file line number Diff line number Diff line change 11import { UserDomainModel } from 'domain.types/user/user.domain.model' ;
2- import { injectable } from 'tsyringe' ;
2+ import { UserDetailsDto } from 'domain.types/user/user.dto' ;
3+ import { inject , injectable } from 'tsyringe' ;
4+ import { IUserRepo } from '../database/repository.interfaces/user.repo.intrerface' ;
35
46@injectable ( )
57export class UserService {
6- create = async ( userDetails : UserDomainModel ) => {
7- const servicceResponse = {
8- name : 'akash jadhav' ,
9- designation : 'software dev' ,
10- } ;
8+ constructor ( @inject ( 'IUserRepo' ) private _userRepo : IUserRepo ) { }
119
12- return servicceResponse ;
10+ create = async ( userDetails : UserDomainModel ) : Promise < UserDetailsDto > => {
11+ const userDetailsDto : UserDetailsDto = await this . _userRepo . createUser ( userDetails ) ;
12+
13+ return userDetailsDto ;
1314 } ;
1415}
You can’t perform that action at this time.
0 commit comments