import { Type } from 'class-transformer'; import { IsISO8601, IsInt, IsNotEmpty, IsOptional, IsString, Matches, Max, MaxLength, Min, } from 'class-validator'; export class QueryOperationLogsDto { @IsOptional() @IsString() @MaxLength(50) module?: string; @IsOptional() @Type(() => Number) @IsInt() @Min(1) userId?: number; @IsOptional() @Matches(/^\d{4}-\d{2}-\d{2}$/) @IsISO8601({ strict: true }) startDate?: string; @IsOptional() @Matches(/^\d{4}-\d{2}-\d{2}$/) @IsISO8601({ strict: true }) endDate?: string; @IsOptional() @Type(() => Number) @IsInt() @Min(1) page: number = 1; @IsOptional() @Type(() => Number) @IsInt() @Min(1) @Max(200) pageSize: number = 50; } export class CreateAuditLogDto { @IsString() @IsNotEmpty() @MaxLength(50) module: string; @IsString() @IsNotEmpty() @MaxLength(100) action: string; @IsOptional() @IsInt() targetId?: number; @IsOptional() @IsString() @MaxLength(50) targetType?: string; @IsOptional() @IsString() @MaxLength(2000) detail?: string; }