/**
 * Seed les form templates par défaut pour chaque service publié.
 * Idempotent : ne touche pas les templates existants.
 *
 * Usage : `npm run db:seed:forms`
 */

import { config } from "dotenv";
import { eq } from "drizzle-orm";

config({ path: ".env.local" });

async function main() {
  const { db } = await import("../lib/db");
  const { formTemplate } = await import("../lib/db/schema");
  const { services } = await import("../lib/services");
  const { defaultTemplates, genericModificationTemplate } = await import(
    "../lib/forms/defaults"
  );

  let created = 0;
  let skipped = 0;

  for (const service of services) {
    if (service.published === false) continue;

    // Existe déjà ?
    const existing = await db
      .select()
      .from(formTemplate)
      .where(eq(formTemplate.serviceSlug, service.slug))
      .limit(1);

    if (existing.length > 0) {
      skipped++;
      continue;
    }

    const tpl =
      defaultTemplates[service.slug] ??
      genericModificationTemplate(service.title);

    await db.insert(formTemplate).values({
      serviceSlug: service.slug,
      title: tpl.title,
      description: tpl.description ?? null,
      fields: tpl.fields,
      documentRequests: tpl.documentRequests,
      published: true,
    });
    created++;
    console.log(`  + ${service.slug}`);
  }

  console.log(`\n✅ ${created} template(s) créé(s), ${skipped} déjà présent(s).`);
}

main()
  .then(() => process.exit(0))
  .catch((err) => {
    console.error("❌ Seed forms failed:", err);
    process.exit(1);
  });
