Skip to content

Commit

Permalink
error message swapped
Browse files Browse the repository at this point in the history
  • Loading branch information
rialit committed Oct 23, 2024
1 parent 78bb2ee commit 3664d6c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 30 deletions.
47 changes: 19 additions & 28 deletions src/infrastructure/decorators/fields/DecimalField.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {applyDecorators} from '@nestjs/common';
import {Column} from '@steroidsjs/typeorm';
import {buildMessage, IsDecimal, ValidateBy, ValidateIf, ValidationOptions} from 'class-validator';
import {IsDecimal, ValidateBy, ValidateIf, ValidationOptions} from 'class-validator';
import {BaseField, IBaseFieldOptions} from './BaseField';

export interface IDecimalFieldOptions extends IBaseFieldOptions {
Expand All @@ -15,46 +15,37 @@ export const MIN_STRING_AS_NUMBER = 'minStringAsNumber';

export const MAX_STRING_AS_NUMBER = 'maxStringAsNumber';

function stringMin(num: unknown, min: number): boolean {
return typeof num === 'string' && typeof min === 'number' && Number(num) >= min;
}

function StringMin(minValue: number, validationOptions?: ValidationOptions): PropertyDecorator {
function buildValidate(
constraint: number,
validateFunction: (value: any, constraint: number) => boolean,
validationOptions?: ValidationOptions
) {
return ValidateBy(
{
name: MIN_STRING_AS_NUMBER,
constraints: [minValue],
constraints: [constraint],
validator: {
validate: (value, args): boolean => stringMin(value, args?.constraints[0]),
defaultMessage: buildMessage(
eachPrefix => eachPrefix + '$property must not be less than $constraint1',
validationOptions
),
validate: (value, args): boolean => validateFunction(value, args?.constraints[0]),
},
},
validationOptions
);
}

function stringMin(num: unknown, min: number): boolean {
return typeof num === 'string' && typeof min === 'number' && Number(num) >= min;
}

function StringMin(minValue: number, validationOptions?: ValidationOptions): PropertyDecorator {
return buildValidate(minValue, stringMin, validationOptions);
}

function stringMax(num: unknown, max: number): boolean {
return typeof num === 'string' && typeof max === 'number' && Number(num) <= max;
}

function StringMax(maxValue: number, validationOptions?: ValidationOptions): PropertyDecorator {
return ValidateBy(
{
name: MAX_STRING_AS_NUMBER,
constraints: [maxValue],
validator: {
validate: (value, args): boolean => stringMax(value, args?.constraints[0]),
defaultMessage: buildMessage(
eachPrefix => eachPrefix + '$property must not be greater than $constraint1',
validationOptions
),
},
},
validationOptions
);
return buildValidate(maxValue, stringMax, validationOptions);
}

export function DecimalField(options: IDecimalFieldOptions = {}) {
Expand All @@ -79,11 +70,11 @@ export function DecimalField(options: IDecimalFieldOptions = {}) {
}),
typeof options.min === 'number' && StringMin(options.min, {
each: options.isArray,
message: `Должно быть не меньше ${options.min}` || options.minDecimalConstraintMessage,
message: options.minDecimalConstraintMessage || `Должно быть не меньше ${options.min}`,
}),
typeof options.max === 'number' && StringMax(options.max, {
each: options.isArray,
message: `Должно быть не больше ${options.max}` || options.maxDecimalConstraintMessage,
message: options.maxDecimalConstraintMessage || `Должно быть не больше ${options.max}`,
}),
].filter(Boolean)
);
Expand Down
4 changes: 2 additions & 2 deletions src/infrastructure/decorators/fields/DecimalNumberField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ export function DecimalNumberField(options: IDecimalFieldOptions = {}) {
}),
typeof options.min === 'number' && Min(options.min, {
each: options.isArray,
message: `Должно быть не меньше ${options.min}` || options.minDecimalConstraintMessage,
message: options.minDecimalConstraintMessage || `Должно быть не меньше ${options.min}`,
}),
typeof options.max === 'number' && Max(options.max, {
each: options.isArray,
message: `Должно быть не больше ${options.max}` || options.maxDecimalConstraintMessage,
message: options.maxDecimalConstraintMessage || `Должно быть не больше ${options.max}`,
}),
].filter(Boolean));
}

0 comments on commit 3664d6c

Please sign in to comment.