From 942660d5051f617dd8ea08724f1eca364545576a Mon Sep 17 00:00:00 2001 From: BennyKok Date: Fri, 15 Dec 2023 19:48:51 +0800 Subject: [PATCH] fix: show status after create workflow run --- web/src/app/api/create-run/route.ts | 60 ++++++++++++++++++++++++++++ web/src/app/api/run/route.ts | 2 +- web/src/components/VersionSelect.tsx | 4 +- web/src/server/createRun.ts | 5 ++- 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 web/src/app/api/create-run/route.ts diff --git a/web/src/app/api/create-run/route.ts b/web/src/app/api/create-run/route.ts new file mode 100644 index 0000000..5499bf4 --- /dev/null +++ b/web/src/app/api/create-run/route.ts @@ -0,0 +1,60 @@ +import { parseDataSafe } from "../../../lib/parseDataSafe"; +import { createRun } from "../../../server/createRun"; +import { getRunsOutput } from "@/server/getRunsOutput"; +import { NextResponse } from "next/server"; +import { z } from "zod"; + +const Request = z.object({ + workflow_version_id: z.string(), + machine_id: z.string(), +}); + +const Request2 = z.object({ + run_id: z.string(), +}); + +export async function GET(request: Request) { + const [data, error] = await parseDataSafe(Request2, request); + if (!data || error) return error; + + const run = await getRunsOutput(data.run_id); + + return NextResponse.json(run, { + status: 200, + }); +} + +export async function POST(request: Request) { + const [data, error] = await parseDataSafe(Request, request); + if (!data || error) return error; + + const origin = new URL(request.url).origin; + + const { workflow_version_id, machine_id } = data; + + try { + const workflow_run_id = await createRun( + origin, + workflow_version_id, + machine_id + ); + + return NextResponse.json( + { + workflow_run_id: workflow_run_id.workflow_run_id, + }, + { + status: 200, + } + ); + } catch (error: any) { + return NextResponse.json( + { + error: error.message, + }, + { + status: 500, + } + ); + } +} diff --git a/web/src/app/api/run/route.ts b/web/src/app/api/run/route.ts index 3024648..477001e 100644 --- a/web/src/app/api/run/route.ts +++ b/web/src/app/api/run/route.ts @@ -84,7 +84,7 @@ export async function POST(request: Request) { return NextResponse.json( { - run_id: run_id, + run_id: run_id.workflow_run_id, }, { status: 200, diff --git a/web/src/components/VersionSelect.tsx b/web/src/components/VersionSelect.tsx index bca9b08..d22c5b6 100644 --- a/web/src/components/VersionSelect.tsx +++ b/web/src/components/VersionSelect.tsx @@ -118,7 +118,9 @@ export function RunWorkflowButton({ setIsLoading(true); try { const origin = window.location.origin; - await createRun(origin, workflow_version_id, machine); + await callServerPromise( + createRun(origin, workflow_version_id, machine) + ); // console.log(res.json()); setIsLoading(false); } catch (error) { diff --git a/web/src/server/createRun.ts b/web/src/server/createRun.ts index d17c79b..37ec624 100644 --- a/web/src/server/createRun.ts +++ b/web/src/server/createRun.ts @@ -102,7 +102,10 @@ export async function createRun( revalidatePath(`/${workflow_version_data.workflow_id}`); - return workflow_run[0].id; + return { + workflow_run_id: workflow_run[0].id, + message: "Successfully workflow run", + }; // return NextResponse.json( // {