import { ParseValidationError } from '~/data/protocols'; import { MakeArraySchemaAdapter } from '~/data/use-cases'; import { ApplyDefaultArrayRules } from '~/data/use-cases/apply-default-rules/use-cases/apply-default-array-rules'; import { MakeSchema } from '~/domain'; import { IGetSchema } from '~/infra/joi/protocols'; import { IParseNestedSchemas } from '~/infra/joi/protocols/parse-nested-schemas'; import { GetJoiArraySchema, JoiArrayRulesParser } from '~/infra/joi/validators/use-cases/joi-array-validator'; import { JoiArrayValidator } from '~/infra/joi/validators/use-cases/joi-array-validator/joi-array-validator'; import { JoiExt } from '~/main/factories/helpers/make-schema/helpers/get-extended-joi'; export const makeGetArraySchema = (parseNested: IParseNestedSchemas) => { const rulesParser = new JoiArrayRulesParser(parseNested); return new GetJoiArraySchema(JoiExt, rulesParser); }; export const makeArraySchema = ( parseValidationError: ParseValidationError, getJoiSchema: IGetSchema<'array'> ): MakeSchema<'array'> => { const validator = new JoiArrayValidator(getJoiSchema); return new MakeArraySchemaAdapter(validator, new ApplyDefaultArrayRules(), parseValidationError); };