feat(api-ai): add usage log query endpoint
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { Transform, Type } from "class-transformer";
|
||||
import { IsBoolean, IsEnum, IsInt, IsOptional, Max, Min } from "class-validator";
|
||||
import { AiChannel } from "../../../generated/prisma/client";
|
||||
|
||||
function normalizeBoolean(value: unknown): boolean | undefined {
|
||||
if (typeof value === "boolean") {
|
||||
return value;
|
||||
}
|
||||
|
||||
if (typeof value !== "string") {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const normalized = value.trim().toLowerCase();
|
||||
if (normalized === "true" || normalized === "1") {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (normalized === "false" || normalized === "0") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export class ListAiUsageLogsQueryDto {
|
||||
@Type(() => Number)
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
page?: number;
|
||||
|
||||
@Type(() => Number)
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
@Max(100)
|
||||
pageSize?: number;
|
||||
|
||||
@IsOptional()
|
||||
@IsEnum(AiChannel)
|
||||
channel?: AiChannel;
|
||||
|
||||
@Transform(({ value }) => normalizeBoolean(value))
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
success?: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user