import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/server/db";
import { fail, ok } from "@/server/http";
import { requireUser } from "@/server/security/auth";
import { clearAuthCookies } from "@/server/security/cookies";

export async function POST(request: NextRequest) {
  try {
    const { session } = await requireUser(request);
    await prisma.session.update({ where: { id: session.id }, data: { revokedAt: new Date() } });
    const response = ok({ loggedOut: true }) as NextResponse;
    clearAuthCookies(response);
    return response;
  } catch (error) {
    const response = fail(error) as NextResponse;
    clearAuthCookies(response);
    return response;
  }
}
