251208:0010 Backend & Frontend Debug
This commit is contained in:
27
frontend/hooks/use-search.ts
Normal file
27
frontend/hooks/use-search.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
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
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user