UNPKG

@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
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; }