import { NextResponse } from "next/server";
import {
  applyAccountSessionCookie,
  buildAccountSession,
  getAccountSessionFromCookies,
} from "@/lib/storefront-account";
import type { StorefrontAccountSession } from "@/types/storefront";

export async function GET() {
  const session = await getAccountSessionFromCookies();
  return NextResponse.json({ session });
}

export async function POST(request: Request) {
  try {
    const body = (await request.json()) as Partial<StorefrontAccountSession>;
    const session = buildAccountSession(body);

    if (!session) {
      return NextResponse.json(
        { message: "Neispravni korisnički podaci." },
        { status: 400 },
      );
    }

    const response = NextResponse.json({ session });
    applyAccountSessionCookie(response, session);
    return response;
  } catch {
    return NextResponse.json(
      { message: "Spremanje korisničke sesije nije uspjelo." },
      { status: 500 },
    );
  }
}

export async function DELETE() {
  const response = NextResponse.json({ success: true });
  applyAccountSessionCookie(response, null);
  return response;
}
