Files
backend/libs/common/src/dto/pagination.request.dto.ts
T
2024-10-31 10:14:59 +04:00

67 lines
1.6 KiB
TypeScript

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;
}