83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import { db } from "../db/db.ts";
|
|
import { reminders } from "../db/schema.ts";
|
|
import { Reminder } from "../db/interfaces.ts";
|
|
import { and, desc, eq } 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<Reminder[]> {
|
|
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<Omit<Reminder, "id" | "user_id" | "created_on">>,
|
|
) {
|
|
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();
|
|
}
|