import "server-only";
import { cache } from "react";
import { headers } from "next/headers";
import { redirect } from "next/navigation";
import { eq } from "drizzle-orm";
import { auth } from "./auth";
import { appDb, schema } from "./appdb";

/** İstek başına tek session sorgusu (React cache). */
export const getSession = cache(async () => {
  return auth.api.getSession({ headers: await headers() });
});

/** Oturum yoksa /giris'e yönlendirir; callback ile geri dönüş desteklenir. */
export async function verifySession(callbackPath?: string) {
  const session = await getSession();
  if (!session) {
    const target = callbackPath
      ? `/giris?callback=${encodeURIComponent(callbackPath)}`
      : "/giris";
    redirect(target);
  }
  return session;
}

/** Kredi/paket alanları dahil güncel kullanıcı satırı (session cache'ine güvenme). */
export const getCurrentUser = cache(async () => {
  const session = await getSession();
  if (!session) return null;
  const rows = await appDb
    .select()
    .from(schema.user)
    .where(eq(schema.user.id, session.user.id))
    .limit(1);
  return rows[0] ?? null;
});