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

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()