import { db } from "../db/db.ts"; import { reminders } from "../db/schema.ts"; import { Reminder } from "../db/interfaces.ts"; import { and, desc, eq, isNull } from "drizzle-orm"; // Create a new reminder export async function createReminder( user_id: string, lease_id: string | null, reminder_type: string, title: string, description: string | null, due_date: number, ) { const now = Date.now(); return await db.insert(reminders) .values({ id: crypto.randomUUID(), user_id, lease_id, reminder_type, title, description, due_date, is_completed: false, created_on: now, updated_on: now, }) .returning(); } // Get reminders for a user export async function getRemindersByUserId( user_id: string, include_completed: boolean = false, ): Promise { const conditions = [eq(reminders.user_id, user_id)]; if (!include_completed) { conditions.push(eq(reminders.is_completed, false)); } return await db.select() .from(reminders) .where(and(...conditions)) .orderBy(desc(reminders.due_date)); } // Update an existing reminder export async function updateReminder( id: string, updateData: Partial>, ) { const now = Date.now(); return await db.update(reminders) .set({ ...updateData, updated_on: now, }) .where(eq(reminders.id, id)) .returning(); } // Mark a reminder as completed export async function markReminderCompleted( id: string, is_completed: boolean = true, ) { const now = Date.now(); return await db.update(reminders) .set({ is_completed, updated_on: now, }) .where(eq(reminders.id, id)) .returning(); } // Delete a reminder export async function deleteReminder(id: string) { return await db.delete(reminders).where(eq(reminders.id, id)).returning(); }