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

96 lines (95 loc) 2.91 kB
/** * Event Storage Service - Memory Implementation * * Simple in-memory storage for events */ import { CalendarEvent, CreateEventInput, UpdateEventInput, EventFilter, EventSort, EventResults } from '../interfaces/event.interfaces'; import { IEventStorageService, StorageResult, StorageConfig, StorageStats, SyncStatus } from '../interfaces/event-storage.interfaces'; /** * In-memory storage implementation */ export declare class EventStorageService implements IEventStorageService { private events; private config; private changeCallbacks; private errorCallbacks; /** * Initialize storage */ initialize(config: StorageConfig): Promise<StorageResult<void>>; /** * Get all events */ getAllEvents(): Promise<StorageResult<CalendarEvent[]>>; /** * Get event by ID */ getEventById(id: string): Promise<StorageResult<CalendarEvent | null>>; /** * Query events with filters */ queryEvents(filter?: EventFilter, sort?: EventSort, page?: number, pageSize?: number): Promise<StorageResult<EventResults>>; /** * Create new event */ createEvent(input: CreateEventInput): Promise<StorageResult<CalendarEvent>>; /** * Update existing event */ updateEvent(input: UpdateEventInput): Promise<StorageResult<CalendarEvent>>; /** * Delete event */ deleteEvent(id: string): Promise<StorageResult<void>>; /** * Bulk operations */ bulkCreate(inputs: CreateEventInput[]): Promise<StorageResult<CalendarEvent[]>>; bulkUpdate(inputs: UpdateEventInput[]): Promise<StorageResult<CalendarEvent[]>>; bulkDelete(ids: string[]): Promise<StorageResult<void>>; /** * Import events */ importEvents(events: CalendarEvent[]): Promise<StorageResult<CalendarEvent[]>>; /** * Export events */ exportEvents(filter?: EventFilter): Promise<StorageResult<CalendarEvent[]>>; /** * Clear all events */ clearAll(): Promise<StorageResult<void>>; /** * Get storage statistics */ getStats(): Promise<StorageResult<StorageStats>>; /** * Get sync status */ getSyncStatus(): Promise<StorageResult<SyncStatus>>; /** * Trigger manual sync */ sync(): Promise<StorageResult<void>>; /** * Backup events */ backup(): Promise<StorageResult<string>>; /** * Restore from backup */ restore(backupData: string): Promise<StorageResult<void>>; /** * Event change subscription */ onEventChanged(callback: (event: CalendarEvent, action: 'created' | 'updated' | 'deleted') => void): () => void; /** * Storage error subscription */ onError(callback: (error: string) => void): () => void; private generateId; private applyFilters; private applySorting; private loadFromLocalStorage; private saveToStorage; }