import "server-only";
import { searchByRank } from "@/lib/db";
import type {
  Program,
  ProgramListeSatiri,
  PuanTuruKey,
  RankResultsListe,
} from "@/types/yokatlas";

// Tabloda kullanılmayan alanlar (fakulte, puan2025) client'a serileşmesin.
// Alanlar tek tek seçilir: Program'a alan eklenirse ProgramListeSatiri
// üzerinden derleyici burada da karar vermeye zorlar.
export function programOzetle(p: Program): ProgramListeSatiri {
  return {
    id: p.id,
    isim: p.isim,
    universite: p.universite,
    unitur: p.unitur,
    il: p.il,
    tur: p.tur,
    sure: p.sure,
    sira2025: p.sira2025,
    sira2024: p.sira2024,
    sira2023: p.sira2023,
    sira2022: p.sira2022,
    sira2021: p.sira2021,
    kontenjan2025: p.kontenjan2025,
    yerlesen2025: p.yerlesen2025,
  };
}

// /sonuc'un ham tablosu: yalnızca sıralamayla ulaşılabilen programlar,
// hayal/dengeli/garanti dilimli, dilim başına ilk 20 satır.
export function siraylaProgramAra(
  sira: number,
  tur: PuanTuruKey,
): RankResultsListe {
  const ham = searchByRank(sira, tur, { limitPerBucket: 20 });
  return {
    hayal: ham.hayal.map(programOzetle),
    dengeli: ham.dengeli.map(programOzetle),
    garanti: ham.garanti.map(programOzetle),
    toplam: ham.toplam,
  };
}
