import { Materiel, Prisma } from '@prisma/client'; import { prisma } from '../db/prisma'; export type MaterielAvecCategorie = Prisma.MaterielGetPayload<{ include: { categorie: true } }>; export interface CatalogueFiltres { categorieId?: number; recherche?: string; } export function findDisponiblesParCampus( campusId: number, filtres: CatalogueFiltres, ): Promise { const { categorieId, recherche } = filtres; return prisma.materiel.findMany({ where: { campusId, actif: true, statut: 'DISPONIBLE', ...(categorieId !== undefined ? { categorieId } : {}), ...(recherche ? { OR: [ { nom: { contains: recherche } }, { marque: { contains: recherche } }, { modele: { contains: recherche } }, { reference: { contains: recherche } }, ], } : {}), }, include: { categorie: true }, orderBy: { nom: 'asc' }, }); } export function findById(id: number): Promise { return prisma.materiel.findUnique({ where: { id } }); }