import { eq } from "drizzle-orm";
import { db } from "@/db";
import { merkmale, merkmalOptionen } from "@/db/schema";
import { requirePlatformAdmin } from "@/lib/auth/guards";
import {
  MerkmalListClient,
  type MerkmalRow,
} from "./MerkmalListClient";

export const metadata = { title: "Merkmale — Administration" };

export default async function MerkmalePage() {
  // Default-deny (Verteidigung in der Tiefe — zusätzlich zum Layout-Guard).
  await requirePlatformAdmin();

  const liste = await db
    .select()
    .from(merkmale)
    .where(eq(merkmale.status, "active"))
    .orderBy(merkmale.name);

  const optionen = await db.select().from(merkmalOptionen);
  const optByMerkmal = new Map<string, { wert: string; label: string }[]>();
  for (const o of optionen) {
    const arr = optByMerkmal.get(o.merkmalId) ?? [];
    arr.push({ wert: o.wert, label: o.label });
    optByMerkmal.set(o.merkmalId, arr);
  }

  const rows: MerkmalRow[] = liste.map((m) => ({
    id: m.id,
    name: m.name,
    typ: m.typ,
    einheit: m.einheit ?? undefined,
    geltungsbereich: m.geltungsbereich,
    optionen: optByMerkmal.get(m.id) ?? [],
  }));

  return <MerkmalListClient rows={rows} />;
}
