diff --git a/src/index.ts b/src/index.ts index f7a0fb6..266e9db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,6 +11,7 @@ const main = async () => { port: Number(PORT), routes: { "/": () => new Response(`title: eussi\ndev-mode: ${DEV}\nport: ${PORT}`), + "/issue/create": routes.issueCreate, "/issues/:projectId": routes.issues, }, }); diff --git a/src/routes/index.ts b/src/routes/index.ts index e47145c..3a595e2 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,5 +1,7 @@ +import issueCreate from "./issueCreate" import issues from "./issues"; export const routes = { + issueCreate, issues, }; diff --git a/src/routes/issueCreate.ts b/src/routes/issueCreate.ts new file mode 100644 index 0000000..9596b73 --- /dev/null +++ b/src/routes/issueCreate.ts @@ -0,0 +1,31 @@ +import type { BunRequest } from "bun"; +import { createIssue, getProjectByID, getProjectByBlob } from "../db/queries.js"; + +// /issue/create?projectId=1&title=Testing&description=Description +// OR +// /issue/create?projectBlob=projectBlob&title=Testing&description=Description +export default async function issueCreate(req: BunRequest) { + const url = new URL(req.url); + const projectId = url.searchParams.get("projectId"); + const projectBlob = url.searchParams.get("projectBlob"); + + let project = null; + if (projectId) { + project = await getProjectByID(Number(projectId)); + } else if (projectBlob) { + project = await getProjectByBlob(projectBlob); + } else { + return new Response("missing project blob or project id", { status: 400 }); + } + if (!project) { + return new Response(`project not found: provided ${projectId ?? projectBlob}`, { status: 404 }); + } + + const title = url.searchParams.get("title") || "Untitled Issue"; + const description = url.searchParams.get("description") || ""; + + const issue = await createIssue(project.id, title, description); + + return Response.json(issue); +} + \ No newline at end of file