Implement regimens
This commit is contained in:
parent
1f66fab30f
commit
9f416903ef
66 changed files with 9130 additions and 189 deletions
60
packages/web/src/services/cabinet-events.ts
Normal file
60
packages/web/src/services/cabinet-events.ts
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
import { apiClient } from './api-client';
|
||||
import type { z } from 'zod/v4';
|
||||
import type {
|
||||
CabinetEventListResponseSchema,
|
||||
SpendingSummaryResponseSchema,
|
||||
} from '@meshitrack/shared';
|
||||
|
||||
type CabinetEventListResponse = z.infer<typeof CabinetEventListResponseSchema>;
|
||||
type SpendingSummaryResponse = z.infer<typeof SpendingSummaryResponseSchema>;
|
||||
|
||||
export async function listCabinetEvents(
|
||||
householdId: string,
|
||||
query?: {
|
||||
medicineId?: string;
|
||||
eventType?: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
cursor?: string;
|
||||
limit?: number;
|
||||
},
|
||||
): Promise<CabinetEventListResponse> {
|
||||
const params = new URLSearchParams();
|
||||
if (query?.medicineId) params.set('medicineId', query.medicineId);
|
||||
if (query?.eventType) params.set('eventType', query.eventType);
|
||||
if (query?.startDate) params.set('startDate', query.startDate);
|
||||
if (query?.endDate) params.set('endDate', query.endDate);
|
||||
if (query?.cursor) params.set('cursor', query.cursor);
|
||||
if (query?.limit) params.set('limit', String(query.limit));
|
||||
const qs = params.toString();
|
||||
return apiClient.get<CabinetEventListResponse>(
|
||||
`/households/${householdId}/cabinet-events${qs ? `?${qs}` : ''}`,
|
||||
);
|
||||
}
|
||||
|
||||
export async function getEventsByItem(
|
||||
householdId: string,
|
||||
cabinetItemId: string,
|
||||
query?: { cursor?: string; limit?: number },
|
||||
): Promise<CabinetEventListResponse> {
|
||||
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<CabinetEventListResponse>(
|
||||
`/households/${householdId}/cabinet-events/by-item/${cabinetItemId}${qs ? `?${qs}` : ''}`,
|
||||
);
|
||||
}
|
||||
|
||||
export async function getSpendingSummary(
|
||||
householdId: string,
|
||||
query?: { period?: string; medicineId?: string },
|
||||
): Promise<SpendingSummaryResponse> {
|
||||
const params = new URLSearchParams();
|
||||
if (query?.period) params.set('period', query.period);
|
||||
if (query?.medicineId) params.set('medicineId', query.medicineId);
|
||||
const qs = params.toString();
|
||||
return apiClient.get<SpendingSummaryResponse>(
|
||||
`/households/${householdId}/cabinet-events/spending-summary${qs ? `?${qs}` : ''}`,
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue