import type { NextApiRequest, NextApiResponse } from "next"; import { URL } from "url"; import { parse } from "query-string"; import { PrismaClient } from "@prisma/client"; const prisma: PrismaClient = new PrismaClient(); type Data = { result: any; }; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { const url = new URL(req.url ?? "/", `http://${req.headers.host}`); const parsed = parse(url.search); let missing = { name: "", }; let error = ""; const data: string = parsed.data?.toString().replace(/\\/g, "") ?? "{}"; console.log(data); const parsedDataString = JSON.parse(data); console.log(parsedDataString); const requiredParams = [ "aces", "twos", "threes", "fours", "fives", "sixes", "threeOfAKind", "fourOfAKind", "fullHouse", "smallStraight", "largeStraight", "yahtzee", "chance", "upperScore", "dice", "held", "heldVisuals", "turn", "total", "count", "claimed", "bonus", "email" ]; requiredParams.forEach((param) => { if (!parsedDataString[param]) return (missing.name = param); }); if (missing.name !== "") return res.status(400).json({ result: `Error: missing/empty ${missing.name} parameter`, }); let result = await prismaDB(parsedDataString).catch((e) => error = e).finally(() => { prisma.$disconnect(); }); console.log(error); if (error) return res.status(500).json({ result: error }); return res.status(200).json({ result }); } async function prismaDB(saveData: any): Promise { await prisma.$connect(); let newData = await prisma.saves.create({ data: saveData }); return newData.id; }