import { prisma } from "@pmap/database";
import { NextResponse } from "next/server";
import { hashSessionToken, sessionCookieName } from "../../../../auth";

export async function POST(request: Request) {
  const token = request.headers.get("cookie")?.split(";").map((part) => part.trim()).find((part) => part.startsWith(`${sessionCookieName}=`))?.split("=")[1];
  if (token) {
    await prisma.userSession.updateMany({
      where: { tokenHash: hashSessionToken(decodeURIComponent(token)), revokedAt: null },
      data: { revokedAt: new Date() }
    });
  }

  const response = NextResponse.json({ ok: true, data: { loggedOut: true } });
  response.cookies.set(sessionCookieName, "", {
    httpOnly: true,
    sameSite: "lax",
    secure: process.env.NODE_ENV === "production",
    path: "/",
    expires: new Date(0),
    maxAge: 0
  });
  return response;
}
