Files
lcbp3/frontend/hooks/use-search.ts
admin dcd126d704
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251208:0010 Backend & Frontend Debug
2025-12-08 00:10:37 +07:00

28 lines
962 B
TypeScript

import { useQuery } from '@tanstack/react-query';
import { searchService } from '@/lib/services/search.service';
import { SearchQueryDto } from '@/types/dto/search/search-query.dto';
export const searchKeys = {
all: ['search'] as const,
results: (query: SearchQueryDto) => [...searchKeys.all, 'results', query] as const,
suggestions: (query: string) => [...searchKeys.all, 'suggestions', query] as const,
};
export function useSearch(query: SearchQueryDto) {
return useQuery({
queryKey: searchKeys.results(query),
queryFn: () => searchService.search(query),
enabled: !!query.q || Object.keys(query).length > 0,
placeholderData: (previousData) => previousData,
});
}
export function useSearchSuggestions(query: string) {
return useQuery({
queryKey: searchKeys.suggestions(query),
queryFn: () => searchService.suggest(query),
enabled: query.length > 2,
staleTime: 60 * 1000, // Cache suggestions for 1 minute
});
}