// Caminho: services/medicosApi.ts (Corrigido) import api from './api'; export interface Doctor { id: string; full_name: string; crm: string; crm_uf: string; specialty: string; active?: boolean; location?: string; phone?: string; } export interface CreateDoctorData { email: string; full_name: string; cpf: string; crm: string; crm_uf: string; specialty?: string; phone_mobile?: string; } interface ListParams { active?: boolean; specialty?: string; } export const medicosApi = { /** * Lista médicos com filtros opcionais. * @param params - Objeto com filtros como { active: true } */ list: async (params: ListParams = {}): Promise => { // Prepara os parâmetros para o formato do PostgREST const queryParams: { [key: string]: any } = { select: '*', }; if (params.active !== undefined) { queryParams.active = `eq.${params.active}`; // CORREÇÃO: Usa 'eq.true' ou 'eq.false' } if (params.specialty) { queryParams.specialty = `eq.${params.specialty}`; } const response = await api.get('/rest/v1/doctors', { params: queryParams, }); return response.data; }, /** * Cria um novo médico com validações através da Edge Function. * @param data - Dados do médico a ser criado. */ createWithValidation: async (data: CreateDoctorData): Promise => { const response = await api.post('/functions/v1/create-doctor', data); return response.data; }, getById: async (id: string): Promise => { const response = await api.get(`/rest/v1/doctors?id=eq.${id}&select=*`); if (response.data.length === 0) { throw new Error("Médico não encontrado"); } return response.data[0]; }, update: async (id: string, data: Partial): Promise => { const response = await api.patch(`/rest/v1/doctors?id=eq.${id}`, data, { headers: { 'Prefer': 'return=representation' }, }); return response.data[0]; }, /** * Busca uma lista de médicos de exemplo do endpoint de mock. * Usado como fallback quando a API real não retorna dados. */ getMockDoctors: async (): Promise => { const response = await api.get('https://mock.apidog.com/m1/1053378-0-default/rest/v1/doctors'); return Array.isArray(response.data) ? response.data : [response.data]; }, };