full status implementation

This commit is contained in:
Oliver Bryan
2026-01-10 16:26:57 +00:00
parent fb96486da8
commit 364e4e0f64
22 changed files with 711 additions and 126 deletions

View File

@@ -1,9 +1,9 @@
import type { AuthedRequest } from "../../auth/middleware";
import { createIssue, getProjectByID, getProjectByKey } from "../../db/queries";
// /issue/create?projectId=1&title=Testing&description=Description
// /issue/create?projectId=1&title=Testing&description=Description&status=TO%20DO
// OR
// /issue/create?projectKey=projectKey&title=Testing&description=Description
// /issue/create?projectKey=projectKey&title=Testing&description=Description&status=TO%20DO
export default async function issueCreate(req: AuthedRequest) {
const url = new URL(req.url);
const projectId = url.searchParams.get("projectId");
@@ -25,8 +25,9 @@ export default async function issueCreate(req: AuthedRequest) {
const description = url.searchParams.get("description") || "";
const assigneeIdParam = url.searchParams.get("assigneeId");
const assigneeId = assigneeIdParam ? Number(assigneeIdParam) : undefined;
const status = url.searchParams.get("status") || undefined;
const issue = await createIssue(project.id, title, description, req.userId, assigneeId);
const issue = await createIssue(project.id, title, description, req.userId, assigneeId, status);
return Response.json(issue);
}

View File

@@ -1,7 +1,7 @@
import type { BunRequest } from "bun";
import { updateIssue } from "../../db/queries";
// /issue/update?id=1&title=Testing&description=Description&assigneeId=2
// /issue/update?id=1&title=Testing&description=Description&assigneeId=2&status=IN%20PROGRESS
// assigneeId can be "null" to unassign
export default async function issueUpdate(req: BunRequest) {
const url = new URL(req.url);
@@ -13,6 +13,7 @@ export default async function issueUpdate(req: BunRequest) {
const title = url.searchParams.get("title") || undefined;
const description = url.searchParams.get("description") || undefined;
const assigneeIdParam = url.searchParams.get("assigneeId");
const status = url.searchParams.get("status") || undefined;
// Parse assigneeId: "null" means unassign, number means assign, undefined means no change
let assigneeId: number | null | undefined;
@@ -22,7 +23,7 @@ export default async function issueUpdate(req: BunRequest) {
assigneeId = Number(assigneeIdParam);
}
if (!title && !description && assigneeId === undefined) {
if (!title && !description && assigneeId === undefined && !status) {
return new Response("no updates provided", { status: 400 });
}
@@ -30,6 +31,7 @@ export default async function issueUpdate(req: BunRequest) {
title,
description,
assigneeId,
status,
});
return Response.json(issue);