103 lines
3.4 KiB
JavaScript
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');
|