import { IsDate, IsOptional } from 'class-validator'; import { IsPageRequestParam } from '../validators/is-page-request-param.validator'; import { ApiProperty } from '@nestjs/swagger'; import { IsSizeRequestParam } from '../validators/is-size-request-param.validator'; import { Transform } from 'class-transformer'; import { parseToDate } from '../util/parseToDate'; export class PaginationRequestGetListDto { @IsOptional() @IsPageRequestParam({ message: 'Page must be bigger than 0', }) @ApiProperty({ name: 'page', required: false, description: 'Page request', }) page?: number; @IsOptional() @IsSizeRequestParam({ message: 'Size must not be negative', }) @ApiProperty({ name: 'size', required: false, description: 'Size request', }) size?: number; @IsOptional() @ApiProperty({ name: 'name', required: false, description: 'Name to be filtered', }) name?: string; @ApiProperty({ name: 'from', required: false, type: Number, description: `Start time in UNIX timestamp format to filter`, example: 1674172800000, }) @IsOptional() @Transform(({ value }) => parseToDate(value)) @IsDate({ message: `From must be in UNIX timestamp format in order to parse to Date instance`, }) from?: Date; @ApiProperty({ name: 'to', required: false, type: Number, description: `End time in UNIX timestamp format to filter`, example: 1674259200000, }) @IsOptional() @Transform(({ value }) => parseToDate(value)) @IsDate({ message: `To must be in UNIX timestamp format in order to parse to Date instance`, }) to?: Date; }