@koalarx/nest-cli
Version:
Biblioteca de CLI para criação de projetos utilizando Koala Nest
38 lines (33 loc) • 1.21 kB
text/typescript
import { Person } from '@/domain/entities/person/person'
import { IPersonRepository } from '@/domain/repositories/iperson.repository'
import { ResourceNotFoundError } from '@koalarx/nest/core/errors/resource-not-found.error'
import { AutoMappingService } from '@koalarx/nest/core/mapping/auto-mapping.service'
import { RequestHandlerBase } from '@koalarx/nest/core/request-overflow/request-handler.base'
import {
failure,
ok,
RequestResult,
} from '@koalarx/nest/core/request-overflow/request-result'
import { Injectable } from '@nestjs/common'
import { ReadPersonResponse } from './read-person.response'
()
export class ReadPersonHandler extends RequestHandlerBase<
number,
RequestResult<ResourceNotFoundError, ReadPersonResponse>
> {
constructor(
private readonly mapper: AutoMappingService,
private readonly repository: IPersonRepository,
) {
super()
}
async handle(
id: number,
): Promise<RequestResult<ResourceNotFoundError, ReadPersonResponse>> {
const person = await this.repository.read(id)
if (!person) {
return failure(new ResourceNotFoundError('Pessoa'))
}
return ok(this.mapper.map(person, Person, ReadPersonResponse))
}
}