File

src/common/decorators/albumvalid.decorator.ts

Index

Methods

Constructor

constructor(albumsService: AlbumsService)
Parameters :
Name Type Optional
albumsService AlbumsService 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 { AlbumsEnum } from '../../utils/enums/responses.enum';
import { AlbumsService } from '../../albums/albums.service';

@ValidatorConstraint({ name: 'IsAlbumValid', async: true })
@Injectable()
export class IsAlbumValidRule implements ValidatorConstraintInterface {
  constructor(private readonly albumsService: AlbumsService) {}

  async validate(value: any, args: ValidationArguments) {
    return !!(await this.albumsService.getAlbum(value));
  }
  defaultMessage(args: ValidationArguments) {
    return AlbumsEnum.INVALID_ALBUM;
  }
}

export function IsAlbumValid(validationOptions?: ValidationOptions) {
  return function (object: any, propertyName: string) {
    registerDecorator({
      name: 'IsAlbumValid',
      target: object.constructor,
      propertyName: propertyName,
      options: validationOptions,
      validator: IsAlbumValidRule,
    });
  };
}

results matching ""

    No results matching ""