From 106fc34aedb35b67b62e0b0cb1b26f67ae70b177 Mon Sep 17 00:00:00 2001 From: Oliver Bryan Date: Thu, 29 Jan 2026 20:42:54 +0000 Subject: [PATCH] fixed issue type not being communicated during creation --- packages/backend/src/db/queries/issues.ts | 6 ++++-- packages/backend/src/routes/issue/create.ts | 5 +++-- packages/frontend/src/components/issue-form.tsx | 4 ++-- packages/shared/src/api-schemas.ts | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/backend/src/db/queries/issues.ts b/packages/backend/src/db/queries/issues.ts index 41ccadd..9415da4 100644 --- a/packages/backend/src/db/queries/issues.ts +++ b/packages/backend/src/db/queries/issues.ts @@ -7,9 +7,10 @@ export async function createIssue( title: string, description: string, creatorId: number, + status: string, + type: string, sprintId?: number, assigneeIds?: number[], - status?: string, ) { // prevents two issues with the same unique number return await db.transaction(async (tx) => { @@ -31,7 +32,8 @@ export async function createIssue( number: nextNumber, creatorId, sprintId, - ...(status && { status }), + status, + type, }) .returning(); diff --git a/packages/backend/src/routes/issue/create.ts b/packages/backend/src/routes/issue/create.ts index 415525b..9cabf1f 100644 --- a/packages/backend/src/routes/issue/create.ts +++ b/packages/backend/src/routes/issue/create.ts @@ -14,7 +14,7 @@ export default async function issueCreate(req: AuthedRequest) { const parsed = await parseJsonBody(req, IssueCreateRequestSchema); if ("error" in parsed) return parsed.error; - const { projectId, title, description = "", status, assigneeIds, sprintId } = parsed.data; + const { projectId, title, description = "", status, assigneeIds, sprintId, type } = parsed.data; const project = await getProjectByID(projectId); if (!project) { @@ -51,9 +51,10 @@ export default async function issueCreate(req: AuthedRequest) { title, description, req.userId, + status, + type, sprintId ?? undefined, assigneeIds, - status, ); return Response.json(issue); diff --git a/packages/frontend/src/components/issue-form.tsx b/packages/frontend/src/components/issue-form.tsx index 8c09e4d..7c3848e 100644 --- a/packages/frontend/src/components/issue-form.tsx +++ b/packages/frontend/src/components/issue-form.tsx @@ -125,8 +125,8 @@ export function IssueForm({ trigger }: { trigger?: React.ReactNode }) { description, sprintId: sprintId === "unassigned" ? null : Number(sprintId), assigneeIds: assigneeIds.filter((id) => id !== "unassigned").map((id) => Number(id)), - status: status.trim() === "" ? undefined : status, - type: type.trim() === "" ? undefined : type, + status: status.trim(), + type: type.trim(), }); setOpen(false); reset(); diff --git a/packages/shared/src/api-schemas.ts b/packages/shared/src/api-schemas.ts index 54add57..883e9c0 100644 --- a/packages/shared/src/api-schemas.ts +++ b/packages/shared/src/api-schemas.ts @@ -79,8 +79,8 @@ export type VerifyEmailRequest = z.infer; export const IssueCreateRequestSchema = z.object({ projectId: z.number().int().positive("projectId must be a positive integer"), - type: z.string().max(ISSUE_TYPE_MAX_LENGTH).optional(), - status: z.string().max(ISSUE_STATUS_MAX_LENGTH).optional(), + type: z.string().max(ISSUE_TYPE_MAX_LENGTH), + status: z.string().max(ISSUE_STATUS_MAX_LENGTH), title: z.string().min(1, "Title is required").max(ISSUE_TITLE_MAX_LENGTH), description: z.string().max(ISSUE_DESCRIPTION_MAX_LENGTH).default(""), assigneeIds: z.array(z.number().int().positive()).optional(),