#!/usr/bin/env node

/**
 * Script simple pour vérifier les colonnes des tables Supabase
 * Usage: node scripts/check-columns.mjs
 */

import { createClient } from '@supabase/supabase-js';
import { config } from 'dotenv';

// Charger les variables d'environnement
config({ path: '.env.local' });

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseServiceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;

if (!supabaseUrl || !supabaseServiceKey) {
  console.error('❌ Variables d\'environnement manquantes:');
  console.error('   NEXT_PUBLIC_SUPABASE_URL:', !!supabaseUrl ? '✅' : '❌');
  console.error('   SUPABASE_SERVICE_ROLE_KEY:', !!supabaseServiceKey ? '✅' : '❌');
  process.exit(1);
}

const supabase = createClient(supabaseUrl, supabaseServiceKey);

async function checkColumns() {
  console.log('🔍 Vérification des colonnes dans les tables Supabase...\n');
  
  const tables = ['organizations', 'salaries', 'cddu_contracts', 'productions'];
  
  for (const table of tables) {
    try {
      console.log(`📋 Table: ${table}`);
      console.log('-'.repeat(50));
      
      const { data, error, count } = await supabase
        .from(table)
        .select('*', { count: 'exact' })
        .limit(1);
        
      if (error) {
        console.log(`   ❌ Erreur: ${error.message}`);
        if (error.message.includes('permission denied') || error.message.includes('does not exist')) {
          console.log(`   💡 Suggestion: Vérifier que la table existe et que les permissions sont correctes`);
        }
      } else {
        console.log(`   📊 Nombre de lignes: ${count}`);
        
        if (data && data.length > 0) {
          const columns = Object.keys(data[0]);
          console.log(`   📝 Colonnes trouvées: ${columns.length}`);
          console.log(`   📋 Liste: ${columns.join(', ')}`);
          
          // Échantillon de données
          console.log(`   📄 Échantillon:`);
          const sample = data[0];
          Object.entries(sample).slice(0, 5).forEach(([key, value]) => {
            const displayValue = value === null ? 'NULL' : 
                                typeof value === 'string' && value.length > 50 ? 
                                value.substring(0, 47) + '...' : 
                                String(value);
            console.log(`      ${key}: ${displayValue}`);
          });
          
          if (Object.keys(sample).length > 5) {
            console.log(`      ... et ${Object.keys(sample).length - 5} autres colonnes`);
          }
        } else {
          console.log(`   ⚠️  Table vide - impossible de déterminer les colonnes`);
        }
      }
      
      console.log(''); // Ligne vide
    } catch (err) {
      console.log(`   ❌ Erreur inattendue: ${err.message}`);
      console.log('');
    }
  }
  
  // Vérification spécifique pour les champs PDFMonkey les plus critiques
  console.log('🎯 Vérification des champs critiques pour PDFMonkey...');
  console.log('='.repeat(60));
  
  const criticalChecks = [
    {
      table: 'organizations',
      fields: ['structure_api', 'name', 'siret', 'address'],
      description: 'Informations structure'
    },
    {
      table: 'salaries', 
      fields: ['nom', 'prenom', 'civilite', 'code_salarie'],
      description: 'Informations salarié'
    },
    {
      table: 'cddu_contracts',
      fields: ['employee_name', 'start_date', 'end_date', 'brut', 'profession'],
      description: 'Informations contrat'
    },
    {
      table: 'productions',
      fields: ['name', 'reference'],
      description: 'Informations spectacle'
    }
  ];
  
  for (const check of criticalChecks) {
    console.log(`\n🔍 ${check.description} (${check.table}):`);
    
    try {
      const { data, error } = await supabase
        .from(check.table)
        .select(check.fields.join(', '))
        .limit(1);
        
      if (error) {
        console.log(`   ❌ Erreur: ${error.message}`);
      } else if (data && data.length > 0) {
        const available = Object.keys(data[0]);
        const missing = check.fields.filter(f => !available.includes(f));
        
        console.log(`   ✅ Disponibles: ${available.join(', ')}`);
        if (missing.length > 0) {
          console.log(`   ❌ Manquants: ${missing.join(', ')}`);
        }
      } else {
        console.log(`   ⚠️  Table vide`);
      }
    } catch (err) {
      console.log(`   ❌ Erreur: ${err.message}`);
    }
  }
  
  console.log('\n✅ Vérification terminée !');
  console.log('\n💡 Prochaines étapes:');
  console.log('   1. Analyser les colonnes manquantes');
  console.log('   2. Créer les migrations nécessaires');
  console.log('   3. Tester avec un contrat réel');
}

checkColumns().catch(console.error);