import { Controller } from '@/application/controllers' import { HttpResponse, ok } from '@/application/helpers' import { ValidationBuilder as Builder } from '@/application/validation' import { CreateCustomer } from '@/domain/contracts/repos' import { {{ className }}UseCase } from '@/domain/use-cases' type HttpRequest = { name: string } type Model = Error | CreateCustomer.Output export class {{ className }}Controller extends Controller { constructor (private readonly {{ className }}: {{ className }}UseCase) { super() } async perform (input: HttpRequest): Promise> { const data = await this.{{ className }}(input) return ok(data) } override buildValidators ({ name, email, inscription, firstName, lastName, password, domain }: HttpRequest): Validator[] { return [ ...Builder.of({ value: name, fieldName: 'name' }).required().build(), ] } }