/** * auth.repository.ts * Queries de banco exclusivas do módulo de autenticação. */ import { eq } from 'drizzle-orm'; import type { Database } from '@/db/connection.js'; import { users, type NewUser } from '@/db/schema.js'; // ─── Busca com senha (apenas para verificação no login) ─────────────────────── export async function findUserByEmail(db: Database, email: string) { const [user] = await db .select() .from(users) .where(eq(users.email, email)) .limit(1); return user ?? null; } // ─── Busca segura (sem password) ────────────────────────────────────────────── export async function findUserById(db: Database, id: number) { const [user] = await db .select({ id: users.id, name: users.name, email: users.email, role: users.role, isActive: users.isActive, createdAt: users.createdAt, updatedAt: users.updatedAt, }) .from(users) .where(eq(users.id, id)) .limit(1); return user ?? null; } // ─── Criação de usuário ─────────────────────────────────────────────────────── export async function createUser( db: Database, data: Pick, ) { const now = new Date().toISOString(); const [user] = await db .insert(users) .values({ ...data, isActive: true, createdAt: now, updatedAt: now, }) .returning({ id: users.id, name: users.name, email: users.email, role: users.role, isActive: users.isActive, createdAt: users.createdAt, }); return user!; }