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

async function initializeSupabaseTables() {
  console.log('🚀 Inicializando tabelas no Supabase...');

  try {
    // 1. Criar tabela de fornecedores
    console.log('📦 Criando tabela fornecedores...');
    const { error: fornecedoresError } = await supabase.rpc('create_fornecedores_table');
    if (fornecedoresError && !fornecedoresError.message.includes('already exists')) {
      console.error('Erro ao criar tabela fornecedores:', fornecedoresError);
    } else {
      console.log('✅ Tabela fornecedores criada/verificada');
    }

    // 2. Criar tabela de produtos
    console.log('📦 Criando tabela produtos...');
    const { error: produtosError } = await supabase.rpc('create_produtos_table');
    if (produtosError && !produtosError.message.includes('already exists')) {
      console.error('Erro ao criar tabela produtos:', produtosError);
    } else {
      console.log('✅ Tabela produtos criada/verificada');
    }

    // 3. Criar tabela de variações de produtos
    console.log('📦 Criando tabela produto_variacoes...');
    const { error: variacoesError } = await supabase.rpc('create_produto_variacoes_table');
    if (variacoesError && !variacoesError.message.includes('already exists')) {
      console.error('Erro ao criar tabela produto_variacoes:', variacoesError);
    } else {
      console.log('✅ Tabela produto_variacoes criada/verificada');
    }

    // 4. Criar tabela de clientes
    console.log('📦 Criando tabela clientes...');
    const { error: clientesError } = await supabase.rpc('create_clientes_table');
    if (clientesError && !clientesError.message.includes('already exists')) {
      console.error('Erro ao criar tabela clientes:', clientesError);
    } else {
      console.log('✅ Tabela clientes criada/verificada');
    }

    // 5. Criar tabela de tipos de despesas
    console.log('📦 Criando tabela tipos_despesas...');
    const { error: tiposDespesasError } = await supabase.rpc('create_tipos_despesas_table');
    if (tiposDespesasError && !tiposDespesasError.message.includes('already exists')) {
      console.error('Erro ao criar tabela tipos_despesas:', tiposDespesasError);
    } else {
      console.log('✅ Tabela tipos_despesas criada/verificada');
    }

    // 6. Criar tabela de despesas
    console.log('📦 Criando tabela despesas...');
    const { error: despesasError } = await supabase.rpc('create_despesas_table');
    if (despesasError && !despesasError.message.includes('already exists')) {
      console.error('Erro ao criar tabela despesas:', despesasError);
    } else {
      console.log('✅ Tabela despesas criada/verificada');
    }

    // 7. Criar tabela de vendas
    console.log('📦 Criando tabela vendas...');
    const { error: vendasError } = await supabase.rpc('create_vendas_table');
    if (vendasError && !vendasError.message.includes('already exists')) {
      console.error('Erro ao criar tabela vendas:', vendasError);
    } else {
      console.log('✅ Tabela vendas criada/verificada');
    }

    // 8. Criar tabela de itens de venda
    console.log('📦 Criando tabela venda_itens...');
    const { error: vendaItensError } = await supabase.rpc('create_venda_itens_table');
    if (vendaItensError && !vendaItensError.message.includes('already exists')) {
      console.error('Erro ao criar tabela venda_itens:', vendaItensError);
    } else {
      console.log('✅ Tabela venda_itens criada/verificada');
    }

    console.log('🎉 Inicialização do Supabase concluída!');
    
    // Testar conexão
    const { data, error } = await supabase.from('fornecedores').select('count', { count: 'exact' });
    if (error) {
      console.error('❌ Erro ao testar conexão:', error);
    } else {
      console.log('✅ Conexão com Supabase funcionando!');
    }

  } catch (error) {
    console.error('❌ Erro geral na inicialização:', error);
  }
}

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

module.exports = initializeSupabaseTables;
