mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
claude-code
This commit is contained in:
36
web/lib/search/search-api.ts
Normal file
36
web/lib/search/search-api.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Server-side search API client.
|
||||
*
|
||||
* Currently a stub — the app uses client-side search via client-search.ts.
|
||||
* When a backend search endpoint is available, swap clientSearch calls
|
||||
* in GlobalSearch.tsx for apiSearch.
|
||||
*/
|
||||
import type { SearchFilters, SearchResult } from "@/lib/types";
|
||||
|
||||
export interface SearchApiResponse {
|
||||
results: SearchResult[];
|
||||
total: number;
|
||||
took: number; // ms
|
||||
}
|
||||
|
||||
export async function apiSearch(
|
||||
query: string,
|
||||
filters: SearchFilters = {},
|
||||
page = 0,
|
||||
pageSize = 20,
|
||||
apiUrl = ""
|
||||
): Promise<SearchApiResponse> {
|
||||
const params = new URLSearchParams({ q: query, page: String(page), pageSize: String(pageSize) });
|
||||
|
||||
if (filters.dateFrom) params.set("dateFrom", String(filters.dateFrom));
|
||||
if (filters.dateTo) params.set("dateTo", String(filters.dateTo));
|
||||
if (filters.role) params.set("role", filters.role);
|
||||
if (filters.conversationId) params.set("conversationId", filters.conversationId);
|
||||
if (filters.contentType) params.set("contentType", filters.contentType);
|
||||
if (filters.model) params.set("model", filters.model);
|
||||
if (filters.tagIds?.length) params.set("tagIds", filters.tagIds.join(","));
|
||||
|
||||
const res = await fetch(`${apiUrl}/api/search?${params.toString()}`);
|
||||
if (!res.ok) throw new Error(`Search API error: ${res.status}`);
|
||||
return res.json() as Promise<SearchApiResponse>;
|
||||
}
|
||||
Reference in New Issue
Block a user