36 lines
1.1 KiB
TypeScript
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;
|
|
} |