import { ApiExtraModels, ApiProperty, PartialType } from "@nestjs/swagger"; import { IsArray } from "class-validator"; import { Order } from "../enums"; import { PageMeta } from "../interfaces/page-meta.interface"; import { PaperDto } from "./paper.dto"; /** * List of allowed properties in this DTO */ const allowedProperties = ['total', 'pagenum', 'order', 'hasNext', 'hasPrev', 'pagesize']; /** * Page model for pagination */ @ApiExtraModels() export class PageMetaDto implements PageMeta { /** * Total number of hits (results) acquired from the search */ @IsArray() @ApiProperty({ description: 'Total number of hits (results) acquired from the search', example: 314 }) total: number; /** * Current page number */ @ApiProperty({ description: 'Current page number', minimum: 1, example: 3 }) pagenum: number; /** * Order of the elements on the page */ @ApiProperty({ description: 'Order of the elements on the page', example: Order.DESC }) order: Order; /** * Flag, that shows if there's a page following the current one */ @ApiProperty({ description: 'Flag, that shows if there\'s a page following the current one', example: true }) hasNext: boolean; /** * Flag, that shows if there's a page preceding the current one */ @ApiProperty({ description: 'Flag, that shows if there\'s a page preceding the current one', example: true }) hasPrev: boolean; /** * Maximum number of elements on the page */ @ApiProperty({ description: 'Maximum number of elements on the page', minimum: 1, example: 20 }) pagesize: number; }