import { apiClient } from './api-client'; import type { z } from 'zod/v4'; import type { MedicineResponseSchema, MedicineListResponseSchema, MedicineProductResponseSchema, MedicineProductListResponseSchema, CreateMedicineInput, UpdateMedicineInput, CreateMedicineProductInput, UpdateMedicineProductInput, } from '@meshitrack/shared'; type MedicineResponse = z.infer; type MedicineListResponse = z.infer; type MedicineProductResponse = z.infer; type MedicineProductListResponse = z.infer; export async function listMedicines( householdId: string, query?: { q?: string; category?: string; form?: string; cursor?: string; limit?: number }, ): Promise { const params = new URLSearchParams(); if (query?.q) params.set('q', query.q); if (query?.category) params.set('category', query.category); if (query?.form) params.set('form', query.form); if (query?.cursor) params.set('cursor', query.cursor); if (query?.limit) params.set('limit', String(query.limit)); const qs = params.toString(); return apiClient.get( `/households/${householdId}/medicines${qs ? `?${qs}` : ''}`, ); } export async function getMedicine(householdId: string, id: string): Promise { return apiClient.get(`/households/${householdId}/medicines/${id}`); } export async function createMedicine( householdId: string, data: CreateMedicineInput, ): Promise { return apiClient.post(`/households/${householdId}/medicines`, data); } export async function updateMedicine( householdId: string, id: string, data: UpdateMedicineInput, ): Promise { return apiClient.patch(`/households/${householdId}/medicines/${id}`, data); } export async function deleteMedicine(householdId: string, id: string): Promise { return apiClient.delete(`/households/${householdId}/medicines/${id}`); } export async function listMedicineProducts( householdId: string, medicineId: string, query?: { cursor?: string; limit?: number }, ): Promise { const params = new URLSearchParams(); if (query?.cursor) params.set('cursor', query.cursor); if (query?.limit) params.set('limit', String(query.limit)); const qs = params.toString(); return apiClient.get( `/households/${householdId}/medicines/${medicineId}/products${qs ? `?${qs}` : ''}`, ); } export async function createMedicineProduct( householdId: string, medicineId: string, data: CreateMedicineProductInput, ): Promise { return apiClient.post( `/households/${householdId}/medicines/${medicineId}/products`, data, ); } export async function updateMedicineProduct( householdId: string, id: string, data: UpdateMedicineProductInput, ): Promise { return apiClient.patch( `/households/${householdId}/medicine-products/${id}`, data, ); } export async function deleteMedicineProduct(householdId: string, id: string): Promise { return apiClient.delete(`/households/${householdId}/medicine-products/${id}`); }