import { ParseValidationErrorAdapter } from '~/data/use-cases'; import { MakeSchema } from '~/domain'; import { IParseNestedSchemas } from '~/infra/joi/protocols/parse-nested-schemas'; import { makeArraySchema } from '~/main/factories/helpers/make-schema/array'; import { makeGetAllSchemas } from '~/main/factories/helpers/make-schema/helpers/get-initial-adapter-schema'; import { makeParseNested } from '~/main/factories/helpers/make-schema/helpers/make-parse-nested-structure'; import { makeNumberSchema } from '~/main/factories/helpers/make-schema/number'; import { makeObjectSchema } from '~/main/factories/helpers/make-schema/object'; import { makeStringSchema } from '~/main/factories/helpers/make-schema/string'; export const makeMakeSchemas = (): MakeSchema.All => { const parseValidationError = new ParseValidationErrorAdapter(); const parseNested: IParseNestedSchemas = makeParseNested(); const getAllSchemas = makeGetAllSchemas(parseNested); return { number: makeNumberSchema(parseValidationError, getAllSchemas.number), string: makeStringSchema(parseValidationError, getAllSchemas.string), object: makeObjectSchema(parseValidationError, getAllSchemas.object), array: makeArraySchema(parseValidationError, getAllSchemas.array), }; };