const supabase = require('../config/supabase');
const fs = require('fs');
const path = require('path');

async function migrateDespesasToTextFields() {
  console.log('🔄 Migrando tabela despesas para campos de texto livre...');

  try {
    // Ler o script SQL
    const sqlScript = fs.readFileSync(
      path.join(__dirname, '../sql/alter-despesas-text-fields.sql'), 
      'utf8'
    );

    // Dividir o script em comandos individuais
    const commands = sqlScript
      .split(';')
      .map(cmd => cmd.trim())
      .filter(cmd => cmd.length > 0 && !cmd.startsWith('--'));

    console.log(`📝 Executando ${commands.length} comandos SQL...`);

    // Executar cada comando
    for (let i = 0; i < commands.length; i++) {
      const command = commands[i];
      console.log(`⚡ Executando comando ${i + 1}/${commands.length}...`);
      
      try {
        const { error } = await supabase.rpc('exec_sql', { sql_query: command });
        if (error) {
          console.log(`⚠️  Comando ${i + 1} com aviso:`, error.message);
        } else {
          console.log(`✅ Comando ${i + 1} executado com sucesso`);
        }
      } catch (cmdError) {
        console.log(`⚠️  Erro no comando ${i + 1}:`, cmdError.message);
      }
    }

    // Verificar se as colunas foram criadas
    console.log('🔍 Verificando estrutura da tabela...');
    const { data: columns, error: columnsError } = await supabase
      .from('information_schema.columns')
      .select('column_name')
      .eq('table_name', 'despesas')
      .in('column_name', ['tipo_nome', 'fornecedor_nome']);

    if (columnsError) {
      console.log('⚠️  Não foi possível verificar as colunas:', columnsError.message);
    } else {
      const columnNames = columns.map(col => col.column_name);
      if (columnNames.includes('tipo_nome') && columnNames.includes('fornecedor_nome')) {
        console.log('✅ Colunas tipo_nome e fornecedor_nome criadas com sucesso!');
      } else {
        console.log('⚠️  Algumas colunas podem não ter sido criadas:', columnNames);
      }
    }

    console.log('🎉 Migração concluída!');
    console.log('📋 Agora você pode usar campos de texto livre para Tipo de Despesa e Fornecedor');

  } catch (error) {
    console.error('❌ Erro durante a migração:', error);
  }
}

// Executar se chamado diretamente
if (require.main === module) {
  migrateDespesasToTextFields();
}

module.exports = migrateDespesasToTextFields;
