File

src/common/decorators/uploadvalid.decorator.ts

Index

Methods

Constructor

constructor(uploadsService: UploadsService)
Parameters :
Name Type Optional
uploadsService UploadsService No

Methods

defaultMessage
defaultMessage(args: ValidationArguments)
Parameters :
Name Type Optional
args ValidationArguments No
Returns : any
Async validate
validate(value: any, args: ValidationArguments)
Parameters :
Name Type Optional
value any No
args ValidationArguments No
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,
    });
  };
}

results matching ""

    No results matching ""