src/common/decorators/codeused.decorator.ts
Methods |
|
constructor(codesService: CodesService)
|
||||||
|
Parameters :
|
| defaultMessage | ||||||
defaultMessage(args: ValidationArguments)
|
||||||
|
Parameters :
Returns :
any
|
| Async validate | |||||||||
validate(value: any, args: ValidationArguments)
|
|||||||||
|
Parameters :
Returns :
unknown
|
import {
ValidationArguments,
ValidatorConstraintInterface,
ValidatorConstraint,
ValidationOptions,
registerDecorator,
} from 'class-validator';
import { CodesService } from '../../codes/codes.service';
import { Injectable } from '@nestjs/common';
import { GenericRespEnum } from '../../utils/enums/responses.enum';
@ValidatorConstraint({ name: 'IsCodeUsed', async: true })
@Injectable()
export class IsCodeUsedRule implements ValidatorConstraintInterface {
constructor(private readonly codesService: CodesService) {}
async validate(value: any, args: ValidationArguments) {
return await this.codesService.isCodeUsed(value);
}
defaultMessage(args: ValidationArguments) {
return GenericRespEnum.ERR_CODE_USED;
}
}
export function IsCodeUsed(validationOptions?: ValidationOptions) {
return function (object: any, propertyName: string) {
registerDecorator({
name: 'IsCodeUsed',
target: object.constructor,
propertyName: propertyName,
options: validationOptions,
validator: IsCodeUsedRule,
});
};
}