@sailboat-computer/data-storage
Version:
Shared data storage library for sailboat computer v3
97 lines (96 loc) • 2.4 kB
TypeScript
/**
* PostgreSQL storage provider implementation
*/
import { StorageProvider, PostgreSQLConfig, DataQuery, StoredData, CleanupResult, StorageStatus, DataMetadata } from '../../types';
/**
* PostgreSQL storage provider implementation
*/
export declare class PostgreSQLStorageProvider implements StorageProvider {
private config;
private client;
private initialized;
private lastOperation;
private metrics;
/**
* Create a new PostgreSQL storage provider
*
* @param config - PostgreSQL configuration
*/
constructor(config: PostgreSQLConfig);
/**
* Initialize the provider
*/
initialize(): Promise<void>;
/**
* Create tables if they don't exist
*/
private createTables;
/**
* Store data
*
* @param data - Data to store
* @param metadata - Data metadata
* @returns Data ID
*/
store(data: any, metadata: DataMetadata): Promise<string>;
/**
* Retrieve data
*
* @param query - Data query
* @returns Stored data
*/
retrieve(query: DataQuery): 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;
metadata: DataMetadata;
}>): Promise<string[]>;
/**
* Clean up old data
*
* @param category - Data category
* @param retentionDays - Retention period in days
* @returns Cleanup result
*/
cleanup(category: string, retentionDays: number): Promise<CleanupResult>;
/**
* Get storage status
*
* @returns Storage status
*/
getStatus(): Promise<StorageStatus>;
/**
* Shutdown the provider
*/
shutdown(): Promise<void>;
/**
* Ensure provider is initialized
*
* @throws StorageError if not initialized
*/
private ensureInitialized;
}
/**
* Create a new PostgreSQL storage provider
*
* @param config - PostgreSQL configuration
* @returns PostgreSQL storage provider
*/
export declare function createPostgreSQLProvider(config: PostgreSQLConfig): StorageProvider;