mirror of
https://github.com/hex248/sprint.git
synced 2026-02-08 02:33:01 +00:00
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { type IconStyle, User, type UserRecord } from "@sprint/shared";
|
|
import { eq } from "drizzle-orm";
|
|
import { db } from "../client";
|
|
|
|
export async function createUser(
|
|
name: string,
|
|
username: string,
|
|
email: string,
|
|
passwordHash: string,
|
|
avatarURL?: string | null,
|
|
) {
|
|
const [user] = await db
|
|
.insert(User)
|
|
.values({ name, username, email, passwordHash, avatarURL })
|
|
.returning();
|
|
return user;
|
|
}
|
|
|
|
export async function getUserById(id: number) {
|
|
const [user] = await db.select().from(User).where(eq(User.id, id));
|
|
return user;
|
|
}
|
|
|
|
export async function getUserByUsername(username: string) {
|
|
const [user] = await db.select().from(User).where(eq(User.username, username));
|
|
return user;
|
|
}
|
|
|
|
export async function getUserByEmail(email: string) {
|
|
const [user] = await db.select().from(User).where(eq(User.email, email));
|
|
return user;
|
|
}
|
|
|
|
export async function updateById(
|
|
id: number,
|
|
updates: {
|
|
name?: string;
|
|
passwordHash?: string;
|
|
avatarURL?: string | null;
|
|
iconPreference?: IconStyle;
|
|
plan?: string;
|
|
},
|
|
): Promise<UserRecord | undefined> {
|
|
const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning();
|
|
return user;
|
|
}
|
|
|
|
export async function updateUser(id: number, updates: { plan?: string }) {
|
|
const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning();
|
|
return user;
|
|
}
|