42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
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<MaterielAvecCategorie[]> {
|
|
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<Materiel | null> {
|
|
return prisma.materiel.findUnique({ where: { id } });
|
|
}
|