import { database } from "../../../utils/prismaClient";
import { NextApiRequest, NextApiResponse } from "next";
import { ApiResult } from "../../../types/api";
import { restInPeace } from "../../../utils/restInPeace";
import { default as cryptoRandomString } from "crypto-random-string";
import { handleInterrupts, Interrupt } from "../../../utils/interrupt";
import { authorizeUser } from "../../../utils/authorizeUser";
import { Event } from "@prisma/client";


export default async function handler(req: NextApiRequest, res: NextApiResponse<ApiResult<Event | Event[]>>) {
    handleInterrupts(res, async () => {
        const user = await authorizeUser(req)

        if (req.body.name.length === 0) {
            throw new Interrupt(400, { error: "Name is empty" })
        }

        const create = {
            slug: cryptoRandomString({ length: 12, type: "url-safe" }),
            creatorId: user.id,
            name: req.body.name,
            postcard: req.body.postcard ?? null,
            description: req.body.description,
            startingAt: req.body.startingAt,
            endingAt: req.body.endingAt,
        }

        await restInPeace(req, res, {
            model: database.event,
            create: { create },
        })
    })
}