Files
RDO/scripts/apply-migrations.js
2026-02-20 07:25:32 -03:00

103 lines
3.4 KiB
JavaScript

import { createClient } from '@supabase/supabase-js';
import { readFileSync, readdirSync } from 'fs';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Ler .env
const envContent = readFileSync(join(__dirname, '..', '.env'), 'utf-8');
const envVars = {};
envContent.split('\n').forEach(line => {
const match = line.match(/^([^#=]+)=(.*)$/);
if (match) {
envVars[match[1].trim()] = match[2].trim();
}
});
const supabaseUrl = envVars.VITE_SUPABASE_URL;
const supabaseKey = envVars.VITE_SUPABASE_ANON_KEY;
// IMPORTANTE: Para aplicar migrations, você precisa da SERVICE_ROLE_KEY
// Descomente a linha abaixo e adicione a chave no .env
// const supabaseServiceKey = envVars.SUPABASE_SERVICE_ROLE_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('❌ Credenciais do Supabase não encontradas no .env');
process.exit(1);
}
console.log('⚠️ ATENÇÃO: Este script precisa da SERVICE_ROLE_KEY para funcionar!');
console.log('📝 Por segurança, recomendamos usar o Supabase CLI ou o Dashboard.\n');
console.log('Para usar este script:');
console.log('1. Descomente a linha SUPABASE_SERVICE_ROLE_KEY no .env');
console.log('2. Adicione sua service role key (encontre em: Dashboard > Settings > API)');
console.log('3. Execute novamente\n');
// Se você quiser usar este script, descomente o código abaixo:
/*
const supabase = createClient(supabaseUrl, supabaseServiceKey);
async function applyMigrations() {
console.log('🚀 Iniciando aplicação de migrations...\n');
const migrationsDir = join(__dirname, 'supabase', 'migrations');
const files = readdirSync(migrationsDir)
.filter(f => f.endsWith('.sql'))
.sort();
console.log(`📁 Encontradas ${files.length} migrations:\n`);
files.forEach(f => console.log(` - ${f}`));
console.log('');
for (const file of files) {
console.log(`⏳ Aplicando: ${file}...`);
const sql = readFileSync(join(migrationsDir, file), 'utf-8');
try {
const { data, error } = await supabase.rpc('exec_sql', { sql_query: sql });
if (error) {
console.error(`❌ Erro ao aplicar ${file}:`);
console.error(error);
process.exit(1);
}
console.log(`✅ ${file} aplicada com sucesso!\n`);
} catch (err) {
console.error(`❌ Erro ao aplicar ${file}:`);
console.error(err.message);
process.exit(1);
}
}
console.log('🎉 Todas as migrations foram aplicadas com sucesso!');
console.log('\n📊 Verificando estrutura criada...\n');
// Verificar tabelas criadas
const { data: tables, error: tablesError } = await supabase
.from('information_schema.tables')
.select('table_name')
.eq('table_schema', 'public')
.order('table_name');
if (!tablesError && tables) {
console.log('✅ Tabelas criadas:');
tables.forEach(t => console.log(` - ${t.table_name}`));
}
}
applyMigrations().catch(console.error);
*/
console.log('💡 RECOMENDAÇÃO: Use o Supabase CLI para aplicar as migrations:');
console.log('');
console.log(' 1. supabase link --project-ref bbyzrywmgjiufqtnkslu');
console.log(' 2. supabase db push');
console.log('');
console.log('Ou use o Dashboard do Supabase (SQL Editor) para executar manualmente.');
console.log('');
console.log('Veja instruções completas em: INSTRUCOES_DEPLOY_SUPABASE.md');