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

103 lines
3.3 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
import { readFileSync, writeFileSync } from 'fs';
import { join } from 'path';
import readline from 'readline';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const question = (query) => new Promise(resolve => rl.question(query, resolve));
async function setupSupabase() {
console.log(`
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ 🔗 CONFIGURAR CONEXÃO COM SUPABASE "RDO" ║
║ ║
╚═══════════════════════════════════════════════════════════════╝
`);
console.log('📋 Você vai precisar das credenciais do seu projeto Supabase "RDO"');
console.log(' Acesse: https://supabase.com/dashboard');
console.log(' Selecione o projeto "RDO"');
console.log(' Vá em: Settings → API\n');
// Obter credenciais
const supabaseUrl = await question('🔗 Project URL (https://...supabase.co): ');
const anonKey = await question('🔑 Anon Public Key: ');
// Validar
if (!supabaseUrl || !anonKey) {
console.error('\n❌ Erro: Credenciais não podem estar vazias!');
rl.close();
process.exit(1);
}
if (!supabaseUrl.includes('supabase.co')) {
console.error('\n❌ Erro: URL do Supabase inválida!');
rl.close();
process.exit(1);
}
if (!anonKey.startsWith('eyJ')) {
console.error('\n❌ Erro: Anon Key parece inválida (deve começar com "eyJ")!');
rl.close();
process.exit(1);
}
// Atualizar .env
console.log('\n⏳ Atualizando arquivo .env...');
const envPath = join(process.cwd(), '.env');
const envContent = `# Supabase Configuration
VITE_SUPABASE_URL=${supabaseUrl}
VITE_SUPABASE_ANON_KEY=${anonKey}
# Service Role Key (Backend Only - Never use in frontend)
# SUPABASE_SERVICE_ROLE_KEY=
`;
try {
writeFileSync(envPath, envContent);
console.log('✅ Arquivo .env atualizado com sucesso!\n');
} catch (error) {
console.error('❌ Erro ao atualizar .env:', error.message);
rl.close();
process.exit(1);
}
// Extrair project-ref
const projectRef = supabaseUrl.match(/https:\/\/([^.]+)\.supabase\.co/)?.[1];
console.log('📊 Resumo da configuração:');
console.log(` Project URL: ${supabaseUrl}`);
console.log(` Project Ref: ${projectRef}`);
console.log(` Anon Key: ${anonKey.substring(0, 20)}...`);
console.log('\n✅ Configuração concluída!\n');
console.log('📝 Próximos passos:\n');
console.log('1⃣ Linkar projeto Supabase CLI:');
console.log(` supabase link --project-ref ${projectRef}\n`);
console.log('2⃣ Verificar conexão:');
console.log(' node check-supabase-status.js\n');
console.log('3⃣ Aplicar migrations:');
console.log(' supabase db push\n');
console.log('4⃣ Iniciar desenvolvimento:');
console.log(' npm run dev\n');
rl.close();
}
setupSupabase().catch(error => {
console.error('❌ Erro:', error.message);
rl.close();
process.exit(1);
});