diff --git a/src/db/queries.ts b/src/db/queries.ts index 43f836c..738d4c1 100644 --- a/src/db/queries.ts +++ b/src/db/queries.ts @@ -72,16 +72,8 @@ export async function deleteIssue(projectId: number, number: number) { return await db.delete(Issue).where(and(eq(Issue.projectId, projectId), eq(Issue.number, number))); } -export async function updateIssue( - projectId: number, - number: number, - updates: { title?: string; description?: string }, -) { - return await db - .update(Issue) - .set(updates) - .where(and(eq(Issue.projectId, projectId), eq(Issue.number, number))) - .returning(); +export async function updateIssue(id: number, updates: { title?: string; description?: string }) { + return await db.update(Issue).set(updates).where(eq(Issue.id, id)).returning(); } export async function getIssuesByProject(projectId: number) { diff --git a/src/index.ts b/src/index.ts index 266e9db..b8dd982 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,6 +12,7 @@ const main = async () => { routes: { "/": () => new Response(`title: eussi\ndev-mode: ${DEV}\nport: ${PORT}`), "/issue/create": routes.issueCreate, + "/issue/update": routes.issueUpdate, "/issues/:projectId": routes.issues, }, }); diff --git a/src/routes/index.ts b/src/routes/index.ts index 3a595e2..4d7ab14 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,7 +1,9 @@ -import issueCreate from "./issueCreate" +import issueCreate from "./issueCreate"; import issues from "./issues"; +import issueUpdate from "./issueUpdate"; export const routes = { issueCreate, issues, + issueUpdate, }; diff --git a/src/routes/issueUpdate.ts b/src/routes/issueUpdate.ts new file mode 100644 index 0000000..34cccca --- /dev/null +++ b/src/routes/issueUpdate.ts @@ -0,0 +1,24 @@ +import type { BunRequest } from "bun"; +import { updateIssue } from "../db/queries.js"; + +// /issue/update?id=1&title=Testing&description=Description +export default async function issueUpdate(req: BunRequest) { + const url = new URL(req.url); + const id = url.searchParams.get("id"); + if (!id) { + return new Response("missing issue id", { status: 400 }); + } + + const title = url.searchParams.get("title") || undefined; + const description = url.searchParams.get("description") || undefined; + if (!title && !description) { + return new Response("no updates provided", { status: 400 }); + } + + const issue = await updateIssue(Number(id), { + title, + description, + }); + + return Response.json(issue); +}