import type { Querier, TransactionalDatabase } from '@platform-modules/db';
import {
  getDefaultLocale as getDefaultLocaleFromModule,
  isLocaleActive as isLocaleActiveFromModule,
  upsertLanguage,
} from '@platform-modules/i18n-content';
import type { I18nContentSchema, NewLanguage } from '@platform-modules/i18n-content';

/** Default mod-cms locales seeded on startup. Extend this array to add more locales. */
export const MOD_CMS_DEFAULT_LOCALES: readonly NewLanguage[] = [
  {
    code: 'en',
    nameNative: 'English',
    nameEnglish: 'English',
    direction: 'ltr',
    searchConfig: 'english',
    isActive: true,
    isDefault: true,
  },
];

/** Idempotent locale bootstrap — safe to call on every startup. */
export async function bootstrapLocales(
  db: TransactionalDatabase<I18nContentSchema>,
): Promise<void> {
  for (const locale of MOD_CMS_DEFAULT_LOCALES) {
    await upsertLanguage(db, locale);
  }
}

export function getDefaultLocale(q: Querier<I18nContentSchema>): Promise<string> {
  return getDefaultLocaleFromModule(q);
}

export function isLocaleActive(q: Querier<I18nContentSchema>, code: string): Promise<boolean> {
  return isLocaleActiveFromModule(q, code);
}