import { eq } from "drizzle-orm"; import { passwordResets } from "@app/models"; import { db } from "@app/db"; export type PasswordResetRow = typeof passwordResets.$inferSelect; export const passwordResetDao = { async getByToken(token: string): Promise { const [row] = await db .select() .from(passwordResets) .where(eq(passwordResets.token, token)) .limit(1); return row ?? null; }, async create(data: { userId: string; token: string; expiresAt: Date; }): Promise { const rows = await db.insert(passwordResets).values(data).returning(); const row = rows[0]; if (!row) throw new Error("Failed to create password reset"); return row; }, async markUsed(id: string): Promise { await db .update(passwordResets) .set({ usedAt: new Date() }) .where(eq(passwordResets.id, id)); }, async deleteByUserId(userId: string): Promise { await db.delete(passwordResets).where(eq(passwordResets.userId, userId)); }, };