import { ValidationNumberSchema, ValidationSchemas } from '~/domain'; import { NumberParser } from '~/infra/joi/protocols'; import { IParseNestedSchemas } from '~/infra/joi/protocols/parse-nested-schemas'; import { JoiParseFormatRule } from '~/infra/joi/protocols/rule-parsers/format-parser'; import { JoiCommonRulesParser } from '~/infra/joi/validators/use-cases/joi-common-validator/joi-common-rule-parser'; export class JoiNumberRulesParser extends JoiCommonRulesParser<'number'> implements NumberParser { constructor(private readonly formatParser: JoiParseFormatRule<'number'>, parseSchema: IParseNestedSchemas) { super(parseSchema); } max = (schema: NumberParser.Schema, value: number): NumberParser.Schema => { return schema.max(value); }; min = (schema: NumberParser.Schema, value: number): NumberParser.Schema => { return schema.min(value); }; format = ( schema: NumberParser.Schema, format: ValidationNumberSchema.Format, rules: ValidationSchemas.Rules<'number'> ) => { return this.formatParser.format(schema, format, rules); }; }