kaneo (minimalist kanban) fork to experiment adding a tangled integration
github.com/usekaneo/kaneo
1import { and, eq } from "drizzle-orm";
2import { HTTPException } from "hono/http-exception";
3import db from "../../database";
4import { columnTable, taskTable } from "../../database/schema";
5
6async function updateTaskStatus({
7 id,
8 status,
9}: {
10 id: string;
11 status: string;
12}) {
13 const existingTask = await db.query.taskTable.findFirst({
14 where: eq(taskTable.id, id),
15 });
16
17 if (!existingTask) {
18 throw new HTTPException(404, {
19 message: "Task not found",
20 });
21 }
22
23 const column = await db.query.columnTable.findFirst({
24 where: and(
25 eq(columnTable.projectId, existingTask.projectId),
26 eq(columnTable.slug, status),
27 ),
28 });
29
30 const [updatedTask] = await db
31 .update(taskTable)
32 .set({ status, columnId: column?.id ?? null })
33 .where(eq(taskTable.id, id))
34 .returning();
35
36 if (!updatedTask) {
37 throw new HTTPException(500, {
38 message: "Failed to update task status",
39 });
40 }
41
42 return updatedTask;
43}
44
45export default updateTaskStatus;