riseup-squad18/MEDICONNECT 2/listar-pacientes-api.js

113 lines
3.7 KiB
JavaScript
Raw 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.

// Script para listar todos os usuários/pacientes na API Supabase
import axios from "axios";
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
const SUPABASE_ANON_KEY =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
async function listarPacientes() {
try {
console.log("\n🔍 Buscando pacientes na API Supabase...\n");
// Primeiro, fazer login como admin para obter token
console.log("1⃣ Fazendo login como admin...");
const loginResponse = await axios.post(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
email: "riseup@popcode.com.br",
password: "riseup",
},
{
headers: {
"Content-Type": "application/json",
apikey: SUPABASE_ANON_KEY,
},
}
);
const adminToken = loginResponse.data.access_token;
console.log("✅ Login realizado com sucesso!\n");
// Tentar buscar na tabela de profiles ou users
console.log("2⃣ Buscando usuários na tabela profiles...");
try {
const profilesResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/profiles`,
{
headers: {
"Content-Type": "application/json",
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${adminToken}`,
},
}
);
console.log("\n📊 USUÁRIOS ENCONTRADOS NA TABELA PROFILES:");
console.log("Total:", profilesResponse.data.length);
console.log("\n" + "=".repeat(80) + "\n");
profilesResponse.data.forEach((user, index) => {
console.log(`${index + 1}. ${user.full_name || "Sem nome"}`);
console.log(` 📧 Email: ${user.email}`);
console.log(` 🆔 ID: ${user.id}`);
console.log(` 👤 Role: ${user.role || "Não definido"}`);
console.log(` 📞 Telefone: ${user.phone || "Não informado"}`);
console.log(` 📅 Criado em: ${user.created_at}`);
console.log("");
});
// Filtrar apenas pacientes
const pacientes = profilesResponse.data.filter(
(u) => u.role === "paciente" || u.role === "user"
);
console.log(`\n👥 TOTAL DE PACIENTES: ${pacientes.length}`);
} catch (error) {
if (error.response && error.response.status === 404) {
console.log('❌ Tabela "profiles" não existe\n');
} else {
throw error;
}
}
// Tentar buscar usuários via função
console.log("\n3⃣ Tentando buscar via função list-users...");
try {
const usersResponse = await axios.get(
`${SUPABASE_URL}/functions/v1/list-users`,
{
headers: {
"Content-Type": "application/json",
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${adminToken}`,
},
}
);
console.log("\n📊 USUÁRIOS VIA FUNÇÃO:");
console.log(JSON.stringify(usersResponse.data, null, 2));
} catch (error) {
if (error.response && error.response.status === 404) {
console.log('❌ Função "list-users" não existe\n');
} else {
console.log(
"⚠️ Erro ao buscar via função:",
error.response?.data || error.message
);
}
}
console.log("\n" + "=".repeat(80));
console.log("✨ Busca concluída!\n");
} catch (error) {
console.error("❌ Erro ao listar pacientes:");
if (error.response) {
console.error(" Status:", error.response.status);
console.error(" Dados:", JSON.stringify(error.response.data, null, 2));
} else {
console.error(" Mensagem:", error.message);
}
}
}
listarPacientes();