Files
aiartstudio/server/api/images/history/[id].get.ts
T
2026-04-26 00:39:28 +08:00

74 lines
1.8 KiB
TypeScript

import type { IImageHistoryDetail } from "#shared/types/openai";
import {
clearNewApiAuthCookies,
createApiLogger,
createErrorResponse,
createSuccessResponse,
createUpstreamErrorResponse,
getImageGenerationDetail,
getNewApiUserIdFromCookie,
isUnauthorizedError,
toSafeLogError
} from "~~/server/utils";
export default defineEventHandler(async (event) => {
const logger = createApiLogger("images.history.detail");
logger.info("开始");
try {
const userId = getNewApiUserIdFromCookie(event);
const recordId = parseRecordId(getRouterParam(event, "id"));
logger.info("查询参数", {
userId,
recordId: recordId.toString()
});
const result = await getImageGenerationDetail(userId, recordId);
if (!result) {
logger.warn("记录不存在", {
userId,
recordId: recordId.toString()
});
return createErrorResponse(404, "生图记录不存在");
}
logger.done("成功", {
userId,
recordId: recordId.toString(),
status: result.status,
hasHostedImageUrl: Boolean(result.hostedImageUrl)
});
return createSuccessResponse<IImageHistoryDetail>(
result,
"获取生图详情成功"
);
} catch (error) {
if (isUnauthorizedError(error)) {
clearNewApiAuthCookies(event);
logger.warn("未登录或登录态失效", {
error: toSafeLogError(error)
});
return createErrorResponse(401, "未登录");
}
logger.error("失败", {
error: toSafeLogError(error)
});
return createUpstreamErrorResponse(error, "获取生图详情失败");
}
});
const parseRecordId = (value: string | undefined): bigint => {
if (!value || !/^\d+$/.test(value)) {
throw createError({
statusCode: 400,
statusMessage: "生图记录 ID 不正确"
});
}
return BigInt(value);
};