Clean Architecture: implementando meu primeiro Use Case
Seguindo o curso que estou usando para aprender sobre Clean Arch a ideia refatorarmos o projeto de DDD para aplicar a Clean Architecture
Implementao
De inicio a ideia j adicionar um pasta de useCase onde vo ficar todos os useCases, ento criamos a pasta customer que nesse contexto seria a entidade e a pasta find que o useCase que vou implementar primeiro para o customer dentro dessa pasta vamos criar o arquivo find.customer.dto.ts
que vai definir as interfaces do input e output dos dados para esse use case
export interface InputFindCustomerDto { id: string;}export interface OutputFindCustomerDto { id: string; name: string; address: { street: string; city: string; number: string; zip: string; }}
E ento vamos para a implementao do useCase em si, que vai receber no construtor a interface do repositrio de customer, para que ele possa receber qualquer implementao desse repositorio.
export class FindCostumerUseCase{ constructor(private customerRepository: CustomerRepositoryInterface){} async execute({id}: InputFindCustomerDto): Promise<OutputFindCustomerDto>{ const customer = await this.customerRepository.find(id); return { id: customer.id, name: customer.name, address: { street: customer.address.street, number: customer.address.number, zip: customer.address.zip, city: customer.address.city } } }
Nesse caso eu no precisava formatar os dados para retornar no formato do DTO pois por padro j seria retornado nesse formato, porem quis fazer dessa forma mais por motivos didticos e me forar a no esquecer.
Original Link: https://dev.to/yanpiing/clean-architecture-implementando-meu-primeiro-use-case-4oe7
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To