/** * Utilitários para a camada de serviços (DAL). * Centraliza a lógica de alternância entre Mocks e API Real. */ // Define se o sistema deve usar mocks ou API real. // Prioriza o .env, mas permite fallback para mock em desenvolvimento. export const USE_MOCK = import.meta.env.VITE_USE_MOCK === 'true'; /** * Simula latência de rede para uma experiência mais realista com Mocks. * @param {any} data - Os dados que seriam retornados. * @param {number} ms - Tempo em milissegundos. */ export const simulateLatency = (data, ms = 800) => { console.log(`[MOCK] Simulating latency ${ms}ms for`, data); return new Promise((res) => setTimeout(() => res(data), ms)); }; /** * Helper para abstrair a decisão entre Mock e API. * @param {Object} options - Opções da requisição. * @param {Function} options.mockFn - Função que retorna o mock (deve retornar uma Promise). * @param {Function} options.apiFn - Função que faz a chamada real via Axios. */ export const handleRequest = async ({ mockFn, apiFn }) => { if (USE_MOCK && mockFn) { console.log('[Service] Using MOCK'); return mockFn(); } console.log('[Service] Calling API Real'); try { const response = await apiFn(); // Padroniza o retorno para sempre devolver os dados if (response === null || response === undefined) return null; return response.data !== undefined ? response.data : response; } catch (error) { console.error('API Error:', error); throw error; } };