import db from '../db/knex';
import { ToolPage } from '../models/ToolPage';
import { Language } from '../models/Language';
import * as fs from 'fs';
import * as path from 'path';

async function generateToolPagesJson() {
  try {
    console.log('Fetching tool pages...');
    const toolPages = await ToolPage.query()
      .withGraphFetched('language')
      .where('is_active', true);

    const pagesByLang: { [key: string]: any[] } = {};

    console.log('Processing tool pages...');
    for (const page of toolPages) {
      if (page.language) {
        const langCode = page.language.lang_code;
        if (!pagesByLang[langCode]) {
          pagesByLang[langCode] = [];
        }
        pagesByLang[langCode].push({
          slug: page.page_slug,
          title: page.tool_name,
          description: page.meta_description,
          file_name: page.page_file_name,
          is_home_tool: page.is_home_tool,
        });
      }
    }

    const outputPath = path.resolve(
      __dirname,
      '..',
      '..',
      '..',
      'panel',
      'public',
      'tool-pages.json'
    );

    console.log(`Writing to ${outputPath}...`);
    fs.writeFileSync(outputPath, JSON.stringify(pagesByLang, null, 2));

    console.log('Successfully generated tool-pages.json');
  } catch (error) {
    console.error('Error generating tool-pages.json:', error);
  } finally {
    db.destroy();
  }
}

generateToolPagesJson();
