import { drizzle } from "drizzle-orm/better-sqlite3"; import { eq } from "drizzle-orm"; import { users, User, NewUser } from "../shared/schema"; import * as path from "node:path"; // eslint-disable-next-line @typescript-eslint/no-var-requires const Database = require("better-sqlite3"); const dbPath = path.resolve(process.cwd(), "data.db"); const sqlite = new Database(dbPath); export const db = drizzle(sqlite); // Initialize users table if it doesn't exist sqlite.exec(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) ) `); export async function createUser(data: NewUser): Promise { const [user] = await db.insert(users).values(data).returning(); return user; } export async function getUserByEmail(email: string): Promise { const result = await db.select().from(users).where(eq(users.email, email.toLowerCase())); return result[0]; } export async function getUserById(id: number): Promise { const result = await db.select().from(users).where(eq(users.id, id)); return result[0]; } export async function updateUser(id: number, data: Partial>): Promise { const result = await db.update(users).set(data).where(eq(users.id, id)).returning(); return result[0]; } export async function updateUserPassword(id: number, passwordHash: string): Promise { const result = await db.update(users).set({ passwordHash }).where(eq(users.id, id)).returning(); return result[0]; }