Files
yara724api/src/common/validators/money-amount-string.validator.ts

34 lines
990 B
TypeScript

import {
registerDecorator,
ValidationArguments,
ValidationOptions,
ValidatorConstraint,
ValidatorConstraintInterface,
} from "class-validator";
import { parseMoneyAmountToman } from "src/utils/unicode-digits";
@ValidatorConstraint({ name: "isMoneyAmountString", async: false })
export class IsMoneyAmountStringConstraint implements ValidatorConstraintInterface {
validate(value: unknown): boolean {
if (value == null || value === "") return true;
if (typeof value !== "string") return false;
return parseMoneyAmountToman(value) !== null;
}
defaultMessage(): string {
return "Must be a non-negative whole-Toman amount.";
}
}
export function IsMoneyAmountString(validationOptions?: ValidationOptions) {
return (object: object, propertyName: string) => {
registerDecorator({
target: object.constructor,
propertyName,
options: validationOptions,
constraints: [],
validator: IsMoneyAmountStringConstraint,
});
};
}