import { InsertUser, User } from "@repo/db/types"; import { prisma as db } from "@repo/db/client"; export interface IUsersStorage { // User methods getUser(id: number): Promise; getUsers(limit: number, offset: number): Promise; getUserByUsername(username: string): Promise; createUser(user: InsertUser): Promise; updateUser(id: number, updates: Partial): Promise; deleteUser(id: number): Promise; } export const usersStorage: IUsersStorage = { // User methods async getUser(id: number): Promise { const user = await db.user.findUnique({ where: { id } }); return user ?? undefined; }, async getUsers(limit: number, offset: number): Promise { return await db.user.findMany({ skip: offset, take: limit }); }, async getUserByUsername(username: string): Promise { const user = await db.user.findUnique({ where: { username } }); return user ?? undefined; }, async createUser(user: InsertUser): Promise { return await db.user.create({ data: user as User }); }, async updateUser( id: number, updates: Partial ): Promise { try { return await db.user.update({ where: { id }, data: updates }); } catch { return undefined; } }, async deleteUser(id: number): Promise { try { await db.user.delete({ where: { id } }); return true; } catch { return false; } }, };