1abc3b4cf4
- Fix import ordering (organizeImports) across multiple packages - Replace forEach with for...of loops (noForEach) - Replace non-null assertions with fallback values (noNonNullAssertion) - Add biome-ignore comments for justified noExplicitAny usages - Remove parameter properties, use explicit class properties (noParameterProperties) - Fix string concatenation to template literals (useTemplate) - Fix format issues (CSS, TypeScript) - Add tailwindDirectives CSS parser config in biome.json - Replace var with const (noVar) Result: 0 errors, 12 warnings (all cognitive complexity, acceptable)
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { Elysia, t } from "elysia";
|
|
import type { WorkFlowSteps } from "../shared/types.ts";
|
|
import {
|
|
createWorkflow,
|
|
deleteWorkflow,
|
|
getWorkflow,
|
|
listWorkflows,
|
|
saveWorkflow,
|
|
} from "./workflow.ts";
|
|
|
|
export function createApi() {
|
|
return new Elysia({ prefix: "/api" })
|
|
.get("/health", () => ({ status: "ok" }))
|
|
.get("/workflows", () => listWorkflows())
|
|
.get("/workflows/:name", async ({ params }) => {
|
|
try {
|
|
const steps = await getWorkflow(params.name);
|
|
return steps;
|
|
} catch {
|
|
return new Response(JSON.stringify({ error: "not found" }), {
|
|
status: 404,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
}
|
|
})
|
|
.post(
|
|
"/workflows",
|
|
async ({ body }) => {
|
|
await createWorkflow(body.name, body.description);
|
|
return { ok: true };
|
|
},
|
|
{
|
|
body: t.Object({
|
|
name: t.String(),
|
|
description: t.String(),
|
|
}),
|
|
},
|
|
)
|
|
.put(
|
|
"/workflows/:name",
|
|
async ({ params, body }) => {
|
|
const steps: WorkFlowSteps = typeof body === "string" ? JSON.parse(body) : body;
|
|
await saveWorkflow(params.name, steps);
|
|
return { ok: true };
|
|
},
|
|
{
|
|
body: t.Array(
|
|
t.Object({
|
|
role: t.Object({
|
|
name: t.String(),
|
|
description: t.String(),
|
|
identity: t.String(),
|
|
prepare: t.String(),
|
|
execute: t.String(),
|
|
report: t.String(),
|
|
}),
|
|
transitions: t.Array(
|
|
t.Object({
|
|
target: t.String(),
|
|
condition: t.Union([t.String(), t.Null()]),
|
|
}),
|
|
),
|
|
}),
|
|
),
|
|
},
|
|
)
|
|
.delete("/workflows/:name", async ({ params }) => {
|
|
try {
|
|
await deleteWorkflow(params.name);
|
|
return { ok: true };
|
|
} catch {
|
|
return new Response(JSON.stringify({ error: "not found" }), {
|
|
status: 404,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
}
|
|
});
|
|
}
|