import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
import { verificarToken, type SessaoPayload } from "./auth.js";

export async function createContext({ req, res }: CreateExpressContextOptions) {
  const token = req.cookies?.["biblioteca_sessao"] as string | undefined;
  let usuario: SessaoPayload | null = null;

  if (token) {
    usuario = await verificarToken(token);
  }

  // Usado só pra deduzir acesso anônimo (não logado) — nunca pra
  // identificar pessoa de verdade. x-forwarded-for cobre o caso comum
  // de estar atrás de proxy reverso no cPanel.
  const ip = (req.headers["x-forwarded-for"] as string)?.split(",")[0]?.trim() || req.socket.remoteAddress || "desconhecido";

  return { req, res, usuario, ip };
}

export type Context = Awaited<ReturnType<typeof createContext>>;
