Files
App-Estoque-LiberiKids/scripts/migrate-despesas-text-fields.js
2025-10-14 14:04:17 -03:00

73 lines
2.4 KiB
JavaScript

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;