UNPKG

@sailboat-computer/data-storage

Version:

Shared data storage library for sailboat computer v3

154 lines (153 loc) 4.28 kB
/** * Unified storage manager implementation */ import { UnifiedStorageManager, UnifiedStorageManagerOptions, StorageConfig, StorageStatus, LocalStorageStatus, ClearResult, SyncResult, ResilienceMetrics, DataQuery, StoredData, StorageTierType, CleanupResult, StorageOptions } from '../types'; /** * Unified storage manager implementation */ export declare class UnifiedStorageManagerImpl implements UnifiedStorageManager { private config; private options; private initialized; private remoteStorageManager; private localStorageProvider; private syncInterval?; private offlineBuffer; private lastOperation; private metrics; /** * Create a new unified storage manager * * @param config - Storage configuration * @param options - Storage manager options */ constructor(config: StorageConfig, options?: UnifiedStorageManagerOptions); /** * Initialize the storage manager */ initialize(): Promise<void>; /** * Store data * * @param data - Data to store * @param category - Data category * @param options - Storage options * @returns Data ID */ store(data: any, category: string, options?: StorageOptions): Promise<string>; /** * Retrieve data * * @param query - Data query * @param tier - Storage tier to query (optional) * @returns Stored data */ retrieve(query: DataQuery, tier?: StorageTierType): Promise<StoredData[]>; /** * Update data * * @param data - Data to update */ update(data: StoredData): Promise<void>; /** * Delete data * * @param id - Data ID */ delete(id: string): Promise<void>; /** * Store multiple data items * * @param items - Data items to store * @returns Data IDs */ storeBatch(items: Array<{ data: any; category: string; options?: StorageOptions; }>): Promise<string[]>; /** * Retrieve multiple data sets * * @param queries - Data queries * @param tier - Storage tier to query (optional) * @returns Stored data sets */ retrieveBatch(queries: DataQuery[], tier?: StorageTierType): Promise<StoredData[][]>; /** * Clean up old data * * @param category - Data category * @param tier - Storage tier * @param retentionDays - Retention period in days * @returns Cleanup result */ cleanup(category: string, tier: StorageTierType, retentionDays: number): Promise<CleanupResult>; /** * Migrate data between tiers * * @param id - Data ID * @param fromTier - Source tier * @param toTier - Destination tier */ migrate(id: string, fromTier: StorageTierType, toTier: StorageTierType): Promise<void>; /** * Shutdown the storage manager */ shutdown(): Promise<void>; /** * Get storage status * * @returns Storage status */ getStatus(): Promise<StorageStatus>; /** * Get local storage status * * @returns Local storage status */ getLocalStatus(): Promise<LocalStorageStatus>; /** * Clear local cache * * @returns Clear result */ clearLocalCache(): Promise<ClearResult>; /** * Synchronize local and remote storage * * @returns Sync result */ synchronize(): Promise<SyncResult>; /** * Start sync interval */ private startSyncInterval; /** * Update metrics * * @param latencyMs - Operation latency in milliseconds * @param isError - Whether the operation resulted in an error */ private updateMetrics; /** * Get resilience metrics * * @returns Resilience metrics */ getResilienceMetrics(): ResilienceMetrics; /** * Ensure provider is initialized * * @throws StorageError if not initialized */ private ensureInitialized; } /** * Create a new unified storage manager * * @param config - Storage configuration * @param options - Storage manager options * @returns Unified storage manager */ export declare function createUnifiedStorageManager(config: StorageConfig, options?: UnifiedStorageManagerOptions): UnifiedStorageManager;