import { useQuery } from '@tanstack/react-query'; import { ClientListResponseSchema, ClientDetailSchema, type ClientListQuery, type ClientListResponse, type ClientDetail, } from '@sar/api-interface'; import { apiFetch } from '../api-client'; export const CLIENT_KEYS = { all: ['clients'] as const, list: (params: Partial) => ['clients', 'list', params] as const, detail: (id: number) => ['clients', 'detail', id] as const, }; export function useClientList(params: Partial = {}) { const qs = new URLSearchParams(); if (params.q) qs.set('q', params.q); if (params.status) qs.set('status', params.status); if (params.page) qs.set('page', String(params.page)); if (params.limit) qs.set('limit', String(params.limit)); const query = qs.toString(); return useQuery({ queryKey: CLIENT_KEYS.list(params), queryFn: async () => { const res = await apiFetch(`/clients${query ? `?${query}` : ''}`); return ClientListResponseSchema.parse(res); }, }); } export function useClientDetail(id: number | string | undefined) { return useQuery({ queryKey: CLIENT_KEYS.detail(Number(id)), queryFn: async () => { const res = await apiFetch(`/clients/${id}`); return ClientDetailSchema.parse(res); }, enabled: !!id, }); }