Files
NianAIGC/app/api/v1/jobs/[id]/cancel/route.ts
2026-05-29 12:32:02 +08:00

27 lines
1.0 KiB
TypeScript

import { clearGenerationJobLock, getGenerationJob, updateGenerationJob } from "@/lib/server/data-store";
import { jsonError, jsonOk } from "@/lib/server/api";
import { authenticatePublicApiRequest } from "@/lib/server/public-api-auth";
import { publicApiError } from "@/lib/server/public-api-response";
export const runtime = "nodejs";
export async function POST(request: Request, context: { params: Promise<{ id: string }> }) {
try {
const client = authenticatePublicApiRequest(request);
const { id } = await context.params;
const job = await getGenerationJob(id);
if (!job || job.externalClientId !== client.id) return jsonError("Job not found.", 404);
if (["succeeded", "failed", "expired", "cancelled"].includes(job.status)) {
return jsonOk({ job });
}
await updateGenerationJob(id, {
status: "cancelled",
completedAt: new Date().toISOString()
});
const cancelled = await clearGenerationJobLock(id);
return jsonOk({ job: cancelled });
} catch (error) {
return publicApiError(error);
}
}