mirror of
https://gitlab.com/mobicoop/v3/service/user.git
synced 2026-01-09 23:52:41 +00:00
create, read, findone
This commit is contained in:
23
src/modules/users/domain/dto/create-user.request.ts
Normal file
23
src/modules/users/domain/dto/create-user.request.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { AutoMap } from '@automapper/classes';
|
||||
import { IsNotEmpty, IsString } from 'class-validator';
|
||||
|
||||
export class CreateUserRequest {
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
firstName: string;
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
lastName: string;
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
email: string;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { IsNotEmpty, IsString } from 'class-validator';
|
||||
|
||||
export class FindUserByUuidRequest {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
uuid: string;
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import { IsString } from 'class-validator';
|
||||
|
||||
export class FindUserByUuidRequest {
|
||||
@IsString()
|
||||
uuid: string;
|
||||
}
|
||||
3
src/modules/users/domain/dto/update-user.request.ts
Normal file
3
src/modules/users/domain/dto/update-user.request.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { CreateUserRequest } from './create-user.request';
|
||||
|
||||
export class UpdateUserRequest extends CreateUserRequest {}
|
||||
25
src/modules/users/domain/usecases/create-user.usecase.ts
Normal file
25
src/modules/users/domain/usecases/create-user.usecase.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Mapper } from '@automapper/core';
|
||||
import { InjectMapper } from '@automapper/nestjs';
|
||||
import { CommandHandler } from '@nestjs/cqrs';
|
||||
import { UsersRepository } from '../../adapters/secondaries/users.repository';
|
||||
import { CreateUserCommand } from '../../commands/create-user.command';
|
||||
import { CreateUserRequest } from '../dto/create-user.request';
|
||||
import { User } from '../entities/user';
|
||||
|
||||
@CommandHandler(CreateUserCommand)
|
||||
export class CreateUserUseCase {
|
||||
constructor(
|
||||
private readonly _repository: UsersRepository,
|
||||
@InjectMapper() private readonly _mapper: Mapper,
|
||||
) {}
|
||||
|
||||
async execute(command: CreateUserCommand): Promise<User> {
|
||||
const entity = this._mapper.map(
|
||||
command.createUserRequest,
|
||||
CreateUserRequest,
|
||||
User,
|
||||
);
|
||||
|
||||
return this._repository.create(entity);
|
||||
}
|
||||
}
|
||||
25
src/modules/users/domain/usecases/update-user.usecase.ts
Normal file
25
src/modules/users/domain/usecases/update-user.usecase.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Mapper } from '@automapper/core';
|
||||
import { InjectMapper } from '@automapper/nestjs';
|
||||
import { CommandHandler } from '@nestjs/cqrs';
|
||||
import { UsersRepository } from '../../adapters/secondaries/users.repository';
|
||||
import { UpdateUserCommand } from '../../commands/update-user.command';
|
||||
import { UpdateUserRequest } from '../dto/update-user.request';
|
||||
import { User } from '../entities/user';
|
||||
|
||||
@CommandHandler(UpdateUserCommand)
|
||||
export class UpdateUserUseCase {
|
||||
constructor(
|
||||
private readonly _repository: UsersRepository,
|
||||
@InjectMapper() private readonly _mapper: Mapper,
|
||||
) {}
|
||||
|
||||
async execute(command: UpdateUserCommand): Promise<User> {
|
||||
const entity = this._mapper.map(
|
||||
command.updateUserRequest,
|
||||
UpdateUserRequest,
|
||||
User,
|
||||
);
|
||||
|
||||
return this._repository.update(command.updateUserRequest.uuid, entity);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user