// Serviço para comunicação com o backend const API_BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:3000/api'; interface ApiResponse { data: T | null; error: string | null; isBackendDown: boolean; } // Função auxiliar para fazer requisições async function fetchFromBackend(endpoint: string): Promise> { try { const response = await fetch(`${API_BASE_URL}${endpoint}`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); return { data, error: null, isBackendDown: false, }; } catch (error) { console.error(`Error fetching ${endpoint}:`, error); return { data: null, error: error instanceof Error ? error.message : 'Erro desconhecido', isBackendDown: true, }; } } // Funções específicas para cada endpoint /** * Busca as funções profissionais disponíveis */ export async function getProfessionalRoles(): Promise> { return fetchFromBackend('/professional-roles'); } /** * Busca os tipos de eventos disponíveis */ export async function getEventTypes(): Promise> { return fetchFromBackend('/event-types'); } /** * Busca os cursos/turmas disponíveis */ export async function getCourses(): Promise>> { return fetchFromBackend('/courses'); } /** * Busca as instituições/empresas disponíveis */ export async function getInstitutions(): Promise>> { return fetchFromBackend('/institutions'); } /** * Busca os anos de formatura disponíveis */ export async function getGraduationYears(): Promise> { return fetchFromBackend('/graduation-years'); }