import 'dotenv/config';
import { PrismaPg } from '@prisma/adapter-pg';
import { PrismaClient } from '../src/generated/prisma/client';
import { MINISTRY_TRANSLATIONS, CDCGPSF_TRANSLATIONS } from './seeds/translations';
import { seedTranslationItems } from './seeds/translations/translation-seed.runner';

async function main() {
  if (!process.env.DATABASE_URL) throw new Error('DATABASE_URL is missing');
  const prisma = new PrismaClient({ adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) });
  try {
    for (const [module, seeds] of [['ministry', MINISTRY_TRANSLATIONS], ['cdcgpsf', CDCGPSF_TRANSLATIONS]] as const) {
      // Copy existing Admin wording only into missing Calendar labels. Never
      // overwrite existing Calendar values, remove Request labels, or copy its sidebar title.
      const source = await prisma.translation.findMany({ where: { module, page: 'meeting_requests' } });
      const byKey = new Map(source.map(row => [row.translationKey, row]));
      const items = seeds.filter(row => row.page === 'meeting_calendar').map(row => {
        const prior = row.translationKey === 'title' ? undefined : byKey.get(row.translationKey);
        return prior ? { ...row, englishText: prior.englishText, khmerText: prior.khmerText } : row;
      });
      console.log(await seedTranslationItems(prisma, module, items));
    }
  } finally { await prisma.$disconnect(); }
}
main().catch(() => { console.error('Calendar translation seed failed. Check database connectivity.'); process.exitCode = 1; });
