import {
  CDC_TRANSLATIONS,
  CDCGPSF_TRANSLATIONS,
  CEFP_TRANSLATIONS,
  MINISTRY_TRANSLATIONS,
  PSWG_TRANSLATIONS,
  combineSeedResults,
  seedTranslationItems,
  type TranslationSeedModule,
} from "./translations";

const SEEDS = {
  pswg: PSWG_TRANSLATIONS,
  ministry: MINISTRY_TRANSLATIONS,
  cdc: CDC_TRANSLATIONS,
  cefp: CEFP_TRANSLATIONS,
  cdcgpsf: CDCGPSF_TRANSLATIONS,
} as const;

const DEFAULT_MODULE_ORDER: TranslationSeedModule[] = [
  "pswg",
  "ministry",
  "cdc",
  "cefp",
  "cdcgpsf",
];

/**
 * Seed all translation modules.
 *
 * Example:
 *   await seedTranslations(prisma);
 */
export async function seedTranslations(
  prisma: unknown,
  modules: TranslationSeedModule[] = DEFAULT_MODULE_ORDER,
) {
  const results = [];

  for (const module of modules) {
    const result = await seedTranslationItems(
      prisma,
      module,
      SEEDS[module],
    );

    results.push(result);

    console.log(
      `[translation:${module}] total=${result.total} created=${result.created} kept=${result.kept}`,
    );
  }

  const summary = combineSeedResults(results);

  console.log(
    `[translation] total=${summary.total} created=${summary.created} kept=${summary.kept}`,
  );

  return summary;
}

/**
 * Optional: seed only one module.
 *
 * Example:
 *   await seedTranslationModule(prisma, "cdc");
 */
export async function seedTranslationModule(
  prisma: unknown,
  module: TranslationSeedModule,
) {
  return seedTranslations(prisma, [module]);
}
