// Repositories are the only files allowed to import prisma directly.
// Services call these. This keeps DB queries discoverable in one place
// and makes services easier to test.

import { prisma } from '@/lib/db/prisma';
import { Role, Prisma } from '@prisma/client';

export const userRepository = {
  findByEmail(email: string) {
    return prisma.user.findUnique({ where: { email } });
  },

  findById(id: number) {
    return prisma.user.findUnique({ where: { id } });
  },

  // Used by admin user list. Excludes password hash.
  listAll() {
    return prisma.user.findMany({
      orderBy: { createdAt: 'desc' },
      select: {
        id: true,
        name: true,
        email: true,
        role: true,
        createdAt: true,
      },
    });
  },

  create(data: { name: string; email: string; password: string; role: Role }) {
    return prisma.user.create({
      data,
      select: { id: true, name: true, email: true, role: true, createdAt: true },
    });
  },

  update(id: number, data: Prisma.UserUpdateInput) {
    return prisma.user.update({
      where: { id },
      data,
      select: { id: true, name: true, email: true, role: true, createdAt: true },
    });
  },

  delete(id: number) {
    return prisma.user.delete({ where: { id } });
  },
};
