Spaces:
Runtime error
Runtime error
File size: 2,203 Bytes
cd8bd0a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | type UsageLimitRecord = Record<string, unknown>;
export interface ApiKeyUsageLimitFields {
usageLimitEnabled: boolean;
dailyUsageLimitUsd: number | null;
weeklyUsageLimitUsd: number | null;
}
export function parseUsageLimitEnabled(value: unknown): boolean {
return value === true || value === 1 || value === "1";
}
export function parseNullablePositiveNumber(value: unknown): number | null {
if (typeof value === "number" && Number.isFinite(value) && value > 0) return value;
if (typeof value === "string" && value.trim()) {
const parsed = Number(value);
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
}
return null;
}
export function parseApiKeyUsageLimitFields(record: UsageLimitRecord): ApiKeyUsageLimitFields {
return {
usageLimitEnabled: parseUsageLimitEnabled(
record.usage_limit_enabled ?? record.usageLimitEnabled
),
dailyUsageLimitUsd: parseNullablePositiveNumber(
record.daily_usage_limit_usd ?? record.dailyUsageLimitUsd
),
weeklyUsageLimitUsd: parseNullablePositiveNumber(
record.weekly_usage_limit_usd ?? record.weeklyUsageLimitUsd
),
};
}
export function hasUsageLimitUpdate(update: UsageLimitRecord): boolean {
return (
update.usageLimitEnabled !== undefined ||
update.dailyUsageLimitUsd !== undefined ||
update.weeklyUsageLimitUsd !== undefined
);
}
export function appendUsageLimitUpdates(
update: UsageLimitRecord,
updates: string[],
params: {
usageLimitEnabled?: number;
dailyUsageLimitUsd?: number | null;
weeklyUsageLimitUsd?: number | null;
}
) {
if (update.usageLimitEnabled !== undefined) {
updates.push("usage_limit_enabled = @usageLimitEnabled");
params.usageLimitEnabled = update.usageLimitEnabled === true ? 1 : 0;
}
if (update.dailyUsageLimitUsd !== undefined) {
updates.push("daily_usage_limit_usd = @dailyUsageLimitUsd");
params.dailyUsageLimitUsd = parseNullablePositiveNumber(update.dailyUsageLimitUsd);
}
if (update.weeklyUsageLimitUsd !== undefined) {
updates.push("weekly_usage_limit_usd = @weeklyUsageLimitUsd");
params.weeklyUsageLimitUsd = parseNullablePositiveNumber(update.weeklyUsageLimitUsd);
}
}
|