kaneo (minimalist kanban) fork to experiment adding a tangled integration
github.com/usekaneo/kaneo
1import { eq } from "drizzle-orm";
2import { HTTPException } from "hono/http-exception";
3import db from "../../database";
4import { taskReminderSentTable, taskTable } from "../../database/schema";
5
6async function updateTaskDueDate({
7 id,
8 dueDate,
9}: {
10 id: string;
11 dueDate: Date | null;
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 // Clear sent reminders so new due date triggers fresh notifications
24 await db
25 .delete(taskReminderSentTable)
26 .where(eq(taskReminderSentTable.taskId, id));
27
28 const [updatedTask] = await db
29 .update(taskTable)
30 .set({ dueDate: dueDate || null })
31 .where(eq(taskTable.id, id))
32 .returning();
33
34 if (!updatedTask) {
35 throw new HTTPException(500, {
36 message: "Failed to update task due date",
37 });
38 }
39
40 return updatedTask;
41}
42
43export default updateTaskDueDate;