73 lines
2.4 KiB
JavaScript
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;
|