Files
EME_APP/eme-backend/src/repositories/materiel.repository.ts
T

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 } });
}