This commit is contained in:
Bastian Wagner
2026-08-03 14:49:35 +02:00
parent 71d76725a4
commit b21641f37a
24 changed files with 1009 additions and 136 deletions

View File

@@ -0,0 +1,36 @@
import { Type } from 'class-transformer';
import { IsIn, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
export const TRANSACTIONS_SORTABLE_FIELDS = ['date', 'amount', 'playerName', 'type'] as const;
export type TransactionsSortableField = (typeof TRANSACTIONS_SORTABLE_FIELDS)[number];
export class TransactionsQueryDto {
@IsOptional()
@Type(() => Number)
@IsInt()
@Min(1)
page = 1;
@IsOptional()
@Type(() => Number)
@IsInt()
@Min(1)
@Max(100)
limit = 25;
@IsOptional()
@IsString()
search?: string;
@IsOptional()
@IsString()
type?: string;
@IsOptional()
@IsIn(TRANSACTIONS_SORTABLE_FIELDS)
sortBy: TransactionsSortableField = 'date';
@IsOptional()
@IsIn(['asc', 'desc'])
sortDir: 'asc' | 'desc' = 'desc';
}