import { PROFILE_PAGE_LABELS } from './profile-page-labels';
import { seedTranslationItems } from './translation-seed.runner';
import type { TranslationSeedItem } from './translation-seed.types';

export function profilePageSeeds(): TranslationSeedItem[] {
  return Object.entries(PROFILE_PAGE_LABELS).flatMap(([page, labels]) => {
    const items = Object.entries(labels).map(([key, [englishText, khmerText]]) => {
      const translationKey = key.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
      return {
        module: 'shared' as const, page, translationKey, englishText, khmerText,
        isActive: true,
        ...(translationKey === 'page_title' ? {} : {
          parent: { module: 'shared' as const, page, translationKey: 'page_title' },
        }),
      };
    });
    // Each page must exist before its child labels are created.
    return items.sort((a, b) => Number(b.translationKey === 'page_title') - Number(a.translationKey === 'page_title'));
  });
}

export function seedProfilePages(prisma: unknown) {
  return seedTranslationItems(prisma, 'shared', profilePageSeeds());
}
