40 lines
979 B
TypeScript
40 lines
979 B
TypeScript
import { ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { IsNumber, IsOptional } from 'class-validator';
|
|
|
|
import { PagingDefault } from '../../constants';
|
|
|
|
export class ChatPagingQuery {
|
|
@ApiPropertyOptional({ description: 'Offset', example: 0 })
|
|
@IsOptional()
|
|
@IsNumber()
|
|
offset?: number;
|
|
|
|
@ApiPropertyOptional({ description: 'Limit', example: 10 })
|
|
@IsOptional()
|
|
@IsNumber()
|
|
limit?: number;
|
|
|
|
@ApiPropertyOptional({ description: 'Cursor position for pagination' })
|
|
@IsOptional()
|
|
@IsNumber()
|
|
cursor?: number;
|
|
|
|
constructor(offset: number | undefined, limit: number | undefined, cursor: number | undefined) {
|
|
this.offset = offset;
|
|
this.limit = limit;
|
|
this.cursor = cursor;
|
|
}
|
|
|
|
static default(): ChatPagingQuery {
|
|
return new ChatPagingQuery(undefined, undefined, undefined);
|
|
}
|
|
|
|
get skip(): number {
|
|
return this.offset ?? PagingDefault.offset;
|
|
}
|
|
|
|
get take(): number {
|
|
return this.limit ?? PagingDefault.limit;
|
|
}
|
|
}
|