UNPKG

@sailboat-computer/data-storage

Version:

Shared data storage library for sailboat computer v3

135 lines (134 loc) 3.7 kB
/** * Storage manager implementation */ import { StorageManager, StorageConfig, StorageOptions, StorageStatus, StorageTierType, DataQuery, StoredData, CleanupResult, StorageManagerOptions } from '../types'; /** * Storage manager implementation */ export declare class StorageManagerImpl implements StorageManager { private config; private options; private providers; private initialized; private metrics; private metricsInterval?; /** * Create a new storage manager * * @param config - Storage configuration * @param options - Storage manager options */ constructor(config: StorageConfig, options?: StorageManagerOptions); /** * 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 stored 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 provider for tier * * @param tier - Storage tier * @returns Storage provider * @throws StorageError if provider not found */ private getProvider; /** * Ensure storage manager is initialized * * @throws StorageError if not initialized */ private ensureInitialized; /** * Update metrics * * @param latency - Operation latency in milliseconds * @param isError - Whether operation resulted in error */ private updateMetrics; /** * Start metrics collection */ private startMetricsCollection; } /** * Create a new storage manager * * @param config - Storage configuration * @param options - Storage manager options * @returns Storage manager */ export declare function createStorageManager(config: StorageConfig, options?: StorageManagerOptions): StorageManager;