@sailboat-computer/data-storage
Version:
Shared data storage library for sailboat computer v3
135 lines (134 loc) • 3.7 kB
TypeScript
/**
* 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;