src/common/decorators/uploadvalid.decorator.ts
Methods |
|
constructor(uploadsService: UploadsService)
|
||||||
|
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 { Injectable } from '@nestjs/common';
import { GenericRespEnum } from '../../utils/enums/responses.enum';
import { UploadsService } from '../../uploads/uploads.service';
@ValidatorConstraint({ name: 'IsUploadValid', async: true })
@Injectable()
export class IsUploadValidRule implements ValidatorConstraintInterface {
constructor(private readonly uploadsService: UploadsService) {}
async validate(value: any, args: ValidationArguments) {
return !!(await this.uploadsService.getUploadOwner(value));
}
defaultMessage(args: ValidationArguments) {
return GenericRespEnum.ERR_INVALID_UPLOAD;
}
}
export function IsUploadValid(validationOptions?: ValidationOptions) {
return function (object: any, propertyName: string) {
registerDecorator({
name: 'IsUploadValid',
target: object.constructor,
propertyName: propertyName,
options: validationOptions,
validator: IsUploadValidRule,
});
};
}