Files
beer-inventory/app/models/drinks.server.ts
T

36 lines
1.1 KiB
TypeScript

import { enhance } from "@zenstackhq/runtime";
import { db } from "~/utils/db.server";
import { DrinkType, Manufacturer } from "@prisma/client";
export async function findIdFromSlug(slug:string | undefined) : Promise<number | undefined> {
if(slug){
const id = Number(slug);
if(id) return id;
const drink = await db.drink.findUnique({where: {slug: slug}, select: {id: true}});
return drink?.id;
}
return undefined;
}
export async function findManufacturersFromSearch(searchParams: URLSearchParams) : Promise<Manufacturer[]> {
const dbe = enhance(db);
var result : Manufacturer[] = [];
if(searchParams.has("drink")){
result = result.concat(await dbe.manufacturer.findMany({
orderBy: {name: "asc"},
where: {drinks: { some: { type: { in: searchParams.getAll("drink").map((str) => {return DrinkType[str as keyof typeof DrinkType]})}}}}
}));
}
else {
result = result.concat(await dbe.manufacturer.findMany({
orderBy: {name: "asc"},
where: {NOT: {drinks: {none: {}}}}
}));
}
return result;
}