100 lines
2.9 KiB
JavaScript
100 lines
2.9 KiB
JavaScript
|
|
import { createClient } from '@supabase/supabase-js'
|
|
import fs from 'fs'
|
|
import path from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
|
|
// Read .env file
|
|
const envPath = path.resolve(__dirname, '../.env')
|
|
console.log('Lendo arquivo .env de:', envPath)
|
|
|
|
if (!fs.existsSync(envPath)) {
|
|
console.error('Arquivo .env não encontrado!')
|
|
process.exit(1)
|
|
}
|
|
|
|
const envContent = fs.readFileSync(envPath, 'utf-8')
|
|
const envConfig = {}
|
|
envContent.split('\n').forEach(line => {
|
|
const match = line.match(/^([^=]+)=(.*)$/)
|
|
if (match) {
|
|
const key = match[1].trim()
|
|
const value = match[2].trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1')
|
|
envConfig[key] = value
|
|
}
|
|
})
|
|
|
|
const supabaseUrl = envConfig.VITE_SUPABASE_URL
|
|
const supabaseAnonKey = envConfig.VITE_SUPABASE_ANON_KEY
|
|
|
|
if (!supabaseUrl || !supabaseAnonKey) {
|
|
console.error('Credenciais Supabase não encontradas no .env')
|
|
console.log('Chaves encontradas:', Object.keys(envConfig))
|
|
process.exit(1)
|
|
}
|
|
|
|
const supabase = createClient(supabaseUrl, supabaseAnonKey)
|
|
|
|
const tables = [
|
|
'usuarios',
|
|
'obras',
|
|
'rdos',
|
|
'rdo_atividades',
|
|
'rdo_mao_obra',
|
|
'rdo_equipamentos',
|
|
'rdo_ocorrencias',
|
|
'rdo_anexos',
|
|
'rdo_inspecoes_solda',
|
|
'rdo_verificacoes_torque',
|
|
'tarefas',
|
|
'task_logs'
|
|
]
|
|
|
|
async function verify() {
|
|
console.log('Iniciando verificação de integridade do Supabase...')
|
|
console.log(`URL: ${supabaseUrl}`)
|
|
|
|
// Test connection first
|
|
const { data: authData, error: authError } = await supabase.auth.getSession()
|
|
if (authError) {
|
|
console.warn('Aviso: Erro ao verificar sessão de auth (pode ser normal se não houver sessão persistida):', authError.message)
|
|
}
|
|
|
|
let allGood = true
|
|
let summary = []
|
|
|
|
for (const table of tables) {
|
|
try {
|
|
// Using head: true to avoid fetching data, just checking access/existence
|
|
const { count, error } = await supabase
|
|
.from(table)
|
|
.select('*', { count: 'exact', head: true })
|
|
|
|
if (error) {
|
|
console.error(`❌ Tabela '${table}': Erro - ${error.message} (Code: ${error.code})`)
|
|
summary.push({ table, status: 'Erro', message: error.message })
|
|
allGood = false
|
|
} else {
|
|
console.log(`✅ Tabela '${table}': OK (Registros: ${count})`)
|
|
summary.push({ table, status: 'OK', count })
|
|
}
|
|
} catch (e) {
|
|
console.error(`❌ Tabela '${table}': Exceção - ${e.message}`)
|
|
summary.push({ table, status: 'Exceção', message: e.message })
|
|
allGood = false
|
|
}
|
|
}
|
|
|
|
console.log('\n--- Resumo ---')
|
|
if (allGood) {
|
|
console.log('Todas as tabelas verificadas parecem acessíveis.')
|
|
} else {
|
|
console.log('Foram encontrados problemas em algumas tabelas.')
|
|
}
|
|
}
|
|
|
|
verify()
|