35 lines
968 B
TypeScript
35 lines
968 B
TypeScript
import { getRun } from "@/lib/db";
|
||
import { jobManager } from "@/lib/jobs";
|
||
|
||
export const runtime = "nodejs";
|
||
export const dynamic = "force-dynamic";
|
||
|
||
export async function POST(
|
||
_request: Request,
|
||
{ params }: { params: Promise<{ id: string }> }
|
||
) {
|
||
try {
|
||
const { id } = await params;
|
||
const run = getRun(Number(id));
|
||
if (!run) {
|
||
return Response.json({ error: "run not found" }, { status: 404 });
|
||
}
|
||
if (run.status !== "running" && run.status !== "queued") {
|
||
return Response.json(
|
||
{ error: `run ${run.id} 已结束(${run.status})` },
|
||
{ status: 409 }
|
||
);
|
||
}
|
||
const result = jobManager.stopRun(run.id);
|
||
if (!result.ok) {
|
||
return Response.json(
|
||
{ error: result.message ?? "停止失败" },
|
||
{ status: 409 }
|
||
);
|
||
}
|
||
return Response.json(result.run ?? getRun(run.id));
|
||
} catch (err) {
|
||
return Response.json({ error: (err as Error).message }, { status: 500 });
|
||
}
|
||
}
|