import "server-only";
import { cookies } from "next/headers";
import { isProduction } from "@/server/env";
import { sessionCookieName } from "@/server/auth/config";

/**
 * Transporte del token de sesión. Solo se puede escribir desde Server Actions o Route Handlers.
 * HttpOnly (no accesible desde JavaScript), Secure en producción, SameSite=Lax.
 */
export async function setSessionCookie(token: string, expiresAt: Date): Promise<void> {
  const store = await cookies();
  store.set(sessionCookieName(isProduction()), token, {
    httpOnly: true,
    secure: isProduction(),
    sameSite: "lax",
    path: "/",
    expires: expiresAt,
  });
}

export async function readSessionCookie(): Promise<string | null> {
  const store = await cookies();
  return store.get(sessionCookieName(isProduction()))?.value ?? null;
}

export async function clearSessionCookie(): Promise<void> {
  const store = await cookies();
  store.delete({ name: sessionCookieName(isProduction()), path: "/" });
}
