// Bündelt den Katalog-Seed (src/db/seed/index.ts inkl. Seed-Daten + Drizzle-
// Schema) zu einer einzigen, selbstständigen ESM-Datei docker/seed.mjs für das
// Laufzeit-Image — analog zu docker/migrate.mjs, aber generiert statt handgepflegt.
//
// Hintergrund: Der Standalone-Runner enthält weder `tsx` noch `src/`. Damit
// RUN_SEED=true im Entrypoint tatsächlich funktioniert (statt still no-op zu
// werden), bündeln wir die Seed-Logik beim Build zu Plain-ESM. `pg` und
// `drizzle-orm` bleiben extern (sind im Runner als node_modules vorhanden);
// alles andere (Schema, Seed-Daten, Upserts) wird inline gebündelt, sodass
// keine `src/`-Dateien ins Runner-Image müssen.
//
// Aufruf: node scripts/build-seed-bundle.mjs  (läuft im builder-Stage).

import { build } from "esbuild";
import { fileURLToPath } from "node:url";
import { dirname, resolve } from "node:path";

const here = dirname(fileURLToPath(import.meta.url));
const root = resolve(here, "..");

await build({
  entryPoints: [resolve(root, "src/db/seed/index.ts")],
  outfile: resolve(root, "docker/seed.mjs"),
  bundle: true,
  platform: "node",
  format: "esm",
  target: "node22",
  // Im Runner vorhandene (und im Dockerfile kopierte) Laufzeit-Pakete bleiben
  // extern, damit wir keine zwei Kopien bündeln und die native pg-Kette nutzen.
  external: ["pg", "drizzle-orm", "drizzle-orm/*"],
  // src/db/seed/index.ts importiert ../../lib/audit.js NUR als `import type`
  // (Tx); damit zieht esbuild die @/db-Kette (next-auth etc.) nicht in den
  // Bundle. Die folgende alias-freie Auflösung reicht deshalb aus.
  logLevel: "info",
});

console.log("docker/seed.mjs gebündelt.");
