import { drizzle } from 'drizzle-orm/d1'; import { eq } from 'drizzle-orm'; import { users, type User, type NewUser } from './schema'; export type { User, NewUser }; export function getDb(d1: D1Database) { return drizzle(d1); } export async function createUser( db: D1Database, email: string, passwordHash: string, nickname: string ): Promise { try { const drizzleDb = getDb(db); const newUser: NewUser = { email, passwordHash, nickname }; await drizzleDb.insert(users).values(newUser); // Get the created user const [user] = await drizzleDb .select() .from(users) .where(eq(users.email, email)) .limit(1); return user || null; } catch (error) { console.error('Error creating user:', error); return null; } } export async function getUserByEmail(db: D1Database, email: string): Promise { try { const drizzleDb = getDb(db); const [user] = await drizzleDb .select() .from(users) .where(eq(users.email, email)) .limit(1); return user || null; } catch (error) { console.error('Error fetching user:', error); return null; } } export async function getUserById(db: D1Database, id: number): Promise { try { const drizzleDb = getDb(db); const [user] = await drizzleDb .select() .from(users) .where(eq(users.id, id)) .limit(1); return user || null; } catch (error) { console.error('Error fetching user:', error); return null; } }