dd/src/lib/server/db.ts

76 lines
1.4 KiB
TypeScript

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<User | null> {
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<User | null> {
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<User | null> {
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;
}
}