Initial commit

This commit is contained in:
2026-05-06 11:47:16 +03:00
commit 5416913b91
113 changed files with 23525 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
import { IsOptional, IsInt, Min, Max, IsString, IsIn } from 'class-validator';
import { Transform } from 'class-transformer';
import { ApiPropertyOptional } from '@nestjs/swagger';
export class PaginationDto {
@ApiPropertyOptional({ default: 1, minimum: 1, description: 'Page number' })
@IsOptional()
@Transform(({ value }) => parseInt(value, 10))
@IsInt()
@Min(1)
page?: number = 1;
@ApiPropertyOptional({
default: 10,
minimum: 1,
maximum: 100,
description: 'Items per page',
})
@IsOptional()
@Transform(({ value }) => parseInt(value, 10))
@IsInt()
@Min(1)
@Max(100)
limit?: number = 10;
@ApiPropertyOptional({ description: 'Field to sort by' })
@IsOptional()
@IsString()
sortBy?: string = 'createdAt';
@ApiPropertyOptional({
enum: ['asc', 'desc'],
default: 'desc',
description: 'Sort order',
})
@IsOptional()
@IsIn(['asc', 'desc'])
sortOrder?: 'asc' | 'desc' = 'desc';
@ApiPropertyOptional({ description: 'Search query' })
@IsOptional()
@IsString()
search?: string;
/**
* Get skip value for Prisma
*/
get skip(): number {
return ((this.page || 1) - 1) * (this.limit || 10);
}
/**
* Get take value for Prisma
*/
get take(): number {
return this.limit || 10;
}
/**
* Get orderBy object for Prisma
*/
get orderBy(): Record<string, 'asc' | 'desc'> {
return { [this.sortBy || 'createdAt']: this.sortOrder || 'desc' };
}
}