import axios from 'axios';
import fs from 'fs';
import path from 'path';
import { pingDailyPuzzleUpdated } from '../services/indexingService';

export async function generatePipsHints() {
    const date = new Date().toISOString().split('T')[0];
    
    const isProduction = process.env.NODE_ENV === 'production';
    const baseDir = path.join(__dirname, '..', '..', '..');
    const hintsDir = isProduction
      ? path.join(baseDir, 'nytsolvers', 'dist', 'client', 'hints', 'pips')
      : path.join(baseDir, 'project', 'public', 'hints', 'pips');
    
    if (!fs.existsSync(hintsDir)) {
      fs.mkdirSync(hintsDir, { recursive: true });
    }

    const filePath = path.join(hintsDir, `${date}.json`);

    try {
        const API_URL = isProduction
          ? 'https://api.nytsolvers.com/api/pips/today'
          : 'http://localhost:5000/api/pips/today';

        const response = await axios.get(API_URL);
        const data = response.data;

        const puzzleData = {
          date: data.printDate,
          easy: {
            id: data.easy.id,
            difficulty: 'Easy',
            dominoes: data.easy.dominoes,
            regions: data.easy.regions,
            solution: data.easy.solution,
          },
          medium: {
            id: data.medium.id,
            difficulty: 'Medium',
            dominoes: data.medium.dominoes,
            regions: data.medium.regions,
            solution: data.medium.solution,
          },
          hard: {
            id: data.hard.id,
            difficulty: 'Hard',
            dominoes: data.hard.dominoes,
            regions: data.hard.regions,
            solution: data.hard.solution,
          }
        };

        fs.writeFileSync(filePath, JSON.stringify(puzzleData, null, 2), 'utf8');
        console.log(`Successfully generated Pips hints: ${filePath}`);

        // Trigger search engine indexing (Google Indexing API & Bing IndexNow)
        await pingDailyPuzzleUpdated('pips-hints', date).catch((err: any) =>
          console.error('[Pips] Error pinging search indexing:', err.message)
        );

    } catch (error) {
        console.error("Error in generatePipsHints:", error);
    }
};
