import { authOptions } from "@/lib/auth";
import { prisma } from "@/lib/db";
import { Prisma } from "@prisma/client";
import { getServerSession } from "next-auth/next";
import { revalidatePath } from "next/cache";
import { NextRequest, NextResponse } from "next/server";

type post = Prisma.PostUncheckedCreateInput

export async function POST(req: NextRequest) {
	const session = await getServerSession(authOptions);

	if (!session) {
		return NextResponse.json({ status: 401 });
	}

	const userId = session.user.id
	const data = await req.json()

	console.log("router data: " + data.content, "status:")

	try {
		await prisma.post.create({
			/* data: data */
			data: {
				content: data.content,
				userId: parseInt(userId),
				published: true
			}
		})
		console.log("created")
		const path = req.nextUrl.searchParams.get('path') || '/';
		revalidatePath(path);

		return NextResponse.json({ status: 201, message: 'Message Created' })

	} catch (error) {
		console.log("fail" + error);
	}
	console.log("post")
}

export async function GET(req: NextRequest, res: NextResponse) {
	try {
		const data = await req.json()
		console.log("router data: " + data, "status:")
	} catch (error) {

	}

	try {
		const messages = await prisma.post.findMany({
			orderBy: {
				createdAt: "desc"
			}
		})

		return NextResponse.json({ status: 200, messages: messages })
	} catch (error) {
		console.log("fail" + error);
		// res.status(400)
	}
	console.log("get")
}