48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import { ApiExtraModels, ApiProperty, PartialType } from "@nestjs/swagger";
|
|
import { IsArray } from "class-validator";
|
|
import { Order } from "../enums";
|
|
import { PageMeta } from "../interfaces/page-meta.interface";
|
|
import { PageMetaDto } from "./page-meta.dto";
|
|
import { PaperDto } from "./paper.dto";
|
|
|
|
/**
|
|
* List of allowed properties in this DTO
|
|
*/
|
|
const allowedProperties = ['data', 'meta'];
|
|
|
|
/**
|
|
* Page model for pagination
|
|
*/
|
|
@ApiExtraModels()
|
|
export class PageDto {
|
|
/**
|
|
* Data block of the page
|
|
*/
|
|
@IsArray()
|
|
@ApiProperty({
|
|
description: 'All data (papers) the page contains',
|
|
isArray: true,
|
|
type: PaperDto
|
|
})
|
|
readonly data: PaperDto[];
|
|
|
|
/**
|
|
* Metadata of the page
|
|
*/
|
|
@ApiProperty({
|
|
description: 'Metadata for the page',
|
|
// example: {},
|
|
|
|
})
|
|
readonly meta: PageMetaDto;
|
|
|
|
/**
|
|
* Constructs an object with provided parameters
|
|
* @param data
|
|
* @param meta
|
|
*/
|
|
constructor(data: PaperDto[], meta: PageMeta) {
|
|
this.data = data;
|
|
this.meta = meta;
|
|
}
|
|
} |