import { ValidateSchema } from '~/data/protocols'; import { ValidationSchemas } from '~/domain'; import { parseJoiResult } from '~/infra/joi/helper/parse-joi-result'; import { IGetSchema } from '~/infra/joi/protocols'; export class JoiValidator implements ValidateSchema { constructor(protected readonly joiSchemaGetter: IGetSchema) {} validate(model: ValidateSchema.Model, value: unknown): string[] | null { const schema = this.joiSchemaGetter.getSchema(model.rules); const result = schema.validate(value); const error = parseJoiResult(result); return error; } }