🐛 fix(image-generation): update chargeBeforeGenerate to return ChargeResult and include configForDatabase in parameters

This commit is contained in:
YuTengjing
2025-12-26 11:51:16 +08:00
parent a784b73685
commit 4f2a6833b2
2 changed files with 21 additions and 3 deletions
@@ -1,15 +1,29 @@
import { type NewGeneration, type NewGenerationBatch } from '@/database/schemas';
import type { CreateImageServicePayload } from '@/server/routers/lambda/image';
interface ChargeParams {
configForDatabase: CreateImageServicePayload['params'];
generationParams: CreateImageServicePayload['params'];
generationTopicId?: string;
generationTopicId: string;
imageNum: number;
model: string;
provider: string;
userId: string;
}
type ChargeResult =
| undefined
| {
data: {
batch: NewGenerationBatch;
generations: NewGeneration[];
};
success: true;
};
export async function chargeBeforeGenerate(
// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars
params: ChargeParams,
): Promise<void> {}
): Promise<ChargeResult> {
return undefined;
}
+5 -1
View File
@@ -134,7 +134,8 @@ export const imageRouter = router({
// 防御性检测:确保没有完整URL进入数据库
validateNoUrlsInConfig(configForDatabase, 'configForDatabase');
await chargeBeforeGenerate({
const chargeResult = await chargeBeforeGenerate({
configForDatabase,
generationParams: params,
generationTopicId,
imageNum,
@@ -142,6 +143,9 @@ export const imageRouter = router({
provider,
userId,
});
if (chargeResult) {
return chargeResult;
}
// 步骤 1: 在事务中原子性地创建所有数据库记录
const { batch: createdBatch, generationsWithTasks } = await serverDB.transaction(async (tx) => {