@uplink-protocol/calendar-controller
Version:
Flexible calendar and time picker API supporting both calendar, date-picker, and time-picker integrations for any JavaScript framework or library
58 lines (57 loc) • 2.35 kB
TypeScript
import { IEventSearchService, SearchQuery, SearchResults, SearchResultItem, SearchFacets, SavedSearch, SearchIndexConfig } from '../interfaces/event-search.interfaces';
import { CalendarEvent } from '../interfaces/event.interfaces';
/**
* Implementation of event search service
* Provides comprehensive search and filtering capabilities for events
*/
export declare class EventSearchService implements IEventSearchService {
private events;
private savedSearches;
private searchHistory;
private indexConfig;
initialize(config: SearchIndexConfig): Promise<void>;
buildIndex(events: CalendarEvent[]): Promise<void>;
addToIndex(event: CalendarEvent): Promise<void>;
updateInIndex(event: CalendarEvent): Promise<void>;
removeFromIndex(eventId: string): Promise<void>;
search(query: SearchQuery, page?: number, pageSize?: number): Promise<SearchResults>;
quickSearch(text: string, limit?: number): Promise<SearchResultItem[]>;
getSuggestions(partialText: string, limit?: number): Promise<string[]>;
getFacets(_query?: SearchQuery): Promise<SearchFacets>;
saveSearch(name: string, query: SearchQuery, userId: string): Promise<SavedSearch>;
getSavedSearches(userId?: string): Promise<SavedSearch[]>;
deleteSavedSearch(searchId: string): Promise<void>;
executeSavedSearch(searchId: string): Promise<SearchResults>;
getAnalytics(): Promise<any>;
getSearchAnalytics(): Promise<{
totalSearches: number;
topQueries: Array<{
query: string;
count: number;
}>;
avgSearchTime: number;
noResultsRate: number;
}>;
rebuildIndex(events?: CalendarEvent[]): Promise<void>;
exportSearchResults(results: SearchResults, format: string): Promise<{
data: string;
filename: string;
mimeType: string;
}>;
clearIndex(): Promise<void>;
getIndexStats(): Promise<{
totalEvents: number;
indexSize: number;
lastUpdated: Date;
health: 'good' | 'degraded' | 'poor';
}>;
private applyTextSearch;
private applyFieldSearch;
private applyDateRangeFilter;
private applyAdvancedFilters;
private calculateRelevanceScore;
private getMatchedFields;
private generateProperHighlights;
private getMilliseconds;
private applySorting;
}