import type { TxDrizzleClient } from '../client';
import { insert, listAll, upsertTranslation } from '../queries/support-kb';
import { SUPPORT_KB_SEED } from './support-kb-content';

type SupportedLocale = 'he' | 'en';

export async function seedSupportKb(db: TxDrizzleClient): Promise<void> {
  const existing = await listAll(db, 'he');
  for (const article of SUPPORT_KB_SEED) {
    // Determine canonical locale = first key in locales dict (first-locale-wins).
    const localeEntries = Object.entries(article.locales) as Array<
      [SupportedLocale, { title: string; body_md: string }]
    >;
    // Insert parent with canonical slug (first-locale-wins: slug locked at creation).
    const parent = existing.find((entry) => entry.slug === article.slug);
    let articleId = parent?.id ?? null;
    if (!articleId) {
      const [locale, content] = localeEntries[0]!;
      const created = await insert(db, {
        slug: article.slug,
        locale,
        title: content.title,
        bodyMd: content.body_md,
        category: article.category,
        tags: article.tags,
        visibility: article.visibility,
        isActive: true,
      });
      articleId = created.id;
      localeEntries.shift();
    }

    for (const [locale, content] of localeEntries) {
      await upsertTranslation(db, articleId, {
        locale,
        slug: article.slug,
        title: content.title,
        bodyMd: content.body_md,
      });
    }
  }
}
