'use client'; import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import type { SortingState } from '@tanstack/react-table'; import { getServerSortParams } from '@/components/data-table/sorting'; import { clientService } from '@/services/api'; import type { ClientListParams } from '@/types'; import { clientKeys } from '../queries/clientKeys'; import type { ClientStatusFilter } from './useClientFilters'; interface UseClientsQueryParams { skip: number; limit: number; searchTerm: string; statusFilter: ClientStatusFilter; sorting: SortingState; } function buildClientListParams({ skip, limit, searchTerm, statusFilter, sorting, }: UseClientsQueryParams): ClientListParams { return { skip, limit, search_term: searchTerm || undefined, is_active: statusFilter === 'all' ? undefined : statusFilter === 'active', ...getServerSortParams(sorting), }; } export function useClientsQuery(params: UseClientsQueryParams) { const { skip, limit, searchTerm, statusFilter, sorting } = params; const listParams = useMemo( () => buildClientListParams({ skip, limit, searchTerm, statusFilter, sorting }), [limit, searchTerm, skip, sorting, statusFilter], ); return useQuery({ queryKey: clientKeys.list(listParams), queryFn: () => clientService.getClients(listParams), }); }