From 0d2116815d18e3821313c6d467f243ff14b1e307 Mon Sep 17 00:00:00 2001 From: DaniloSts Date: Sat, 27 Sep 2025 19:13:09 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20servi=C3=A7os=20da=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/api.mjs | 64 ++++++++++++++++++++++++++++++++++++++++ services/doctorsApi.mjs | 0 services/patientsApi.mjs | 9 ++++++ 3 files changed, 73 insertions(+) create mode 100644 services/api.mjs create mode 100644 services/doctorsApi.mjs create mode 100644 services/patientsApi.mjs diff --git a/services/api.mjs b/services/api.mjs new file mode 100644 index 0000000..493d8c8 --- /dev/null +++ b/services/api.mjs @@ -0,0 +1,64 @@ + +// váriaveis básicas +const BASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co"; +const API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"; +var tempToken; + +async function login() { + const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", { + method: "POST", + headers: { + "Content-Type": "application/json", + "apikey": API_KEY, // valor fixo + }, + body: JSON.stringify({ email: "hugo@popcode.com.br", password: "hdoria" }), + }); + + const data = await response.json(); + + console.log("Resposta da API:", data); + console.log("Token:", data.access_token); + // salvar o token do usuário + //localStorage.setItem("token", data.access_token); + tempToken = data.access_token + + return data; +} +await login() + +async function request(endpoint, options = {}) { + //const token = localStorage.getItem("token"); // token do usuário, salvo no login + const token = tempToken; + + const headers = { + "Content-Type": "application/json", + "apikey": API_KEY, // obrigatório sempre + ...(token ? { Authorization: `Bearer ${token}` } : {}), // obrigatório em todas EXCETO login + ...options.headers, + }; + + try { + const response = await fetch(`${BASE_URL}${endpoint}`, { + ...options, + headers, + }); + + if (!response.ok) { + throw new Error(`Erro HTTP: ${response.status}`); + } + + return await response.json(); + } catch (error) { + console.error("Erro na requisição:", error); + throw error; + } +} + +export const api = { + get: (endpoint) => request(endpoint, { method: "GET" }), + post: (endpoint, body) => + request(endpoint, { method: "POST", body: JSON.stringify(body) }), + patch: (endpoint, body) => + request(endpoint, { method: "PATCH", body: JSON.stringify(body) }), + delete: (endpoint) => request(endpoint, { method: "DELETE" }), +}; diff --git a/services/doctorsApi.mjs b/services/doctorsApi.mjs new file mode 100644 index 0000000..e69de29 diff --git a/services/patientsApi.mjs b/services/patientsApi.mjs new file mode 100644 index 0000000..5f0571b --- /dev/null +++ b/services/patientsApi.mjs @@ -0,0 +1,9 @@ +import { api } from "./api.mjs"; + +export const patientsService = { + list: () => api.get("/rest/v1/patients"), + getById: (id) => api.get(`/rest/v1/patients/${id}`), + create: (data) => api.post("/rest/v1/patients", data), + update: (id, data) => api.patch(`/rest/v1/patients/${id}`, data), + delete: (id) => api.delete(`/rest/v1/patients/${id}`), +};