digitaltwin-core
Version:
Minimalist framework to collect and handle data in a Digital Twin project
62 lines • 2.7 kB
TypeScript
import type { Knex } from 'knex';
import type { MetadataRow } from '../database_adapter.js';
import { DatabaseAdapter } from '../database_adapter.js';
import type { DataRecord } from '../../types/data_record.js';
import type { StorageService } from '../../storage/storage_service.js';
export interface PostgreSQLConfig {
host: string;
port?: number;
user: string;
password: string;
database: string;
ssl?: boolean;
}
export interface SQLiteConfig {
filename: string;
client?: 'sqlite3' | 'better-sqlite3';
enableForeignKeys?: boolean;
busyTimeout?: number;
}
/**
* Knex-based implementation with extended querying capabilities.
*/
export declare class KnexDatabaseAdapter extends DatabaseAdapter {
#private;
constructor(config: Knex.Config, storage: StorageService);
/**
* Create a KnexDatabaseAdapter for PostgreSQL with simplified configuration
*/
static forPostgreSQL(pgConfig: PostgreSQLConfig, storage: StorageService, tableName?: string): KnexDatabaseAdapter;
/**
* Create a KnexDatabaseAdapter for SQLite with simplified configuration
*/
static forSQLite(sqliteConfig: SQLiteConfig, storage: StorageService, tableName?: string): KnexDatabaseAdapter;
save(meta: MetadataRow): Promise<DataRecord>;
delete(id: string, name: string): Promise<void>;
getById(id: string, name: string): Promise<DataRecord | undefined>;
getLatestByName(name: string): Promise<DataRecord | undefined>;
doesTableExists(name: string): Promise<boolean>;
createTable(name: string): Promise<void>;
getFirstByName(name: string): Promise<DataRecord | undefined>;
getByDateRange(name: string, startDate: Date, endDate?: Date, limit?: number): Promise<DataRecord[]>;
getAfterDate(name: string, afterDate: Date, limit?: number): Promise<DataRecord[]>;
getLatestBefore(name: string, beforeDate: Date): Promise<DataRecord | undefined>;
getLatestRecordsBefore(name: string, beforeDate: Date, limit: number): Promise<DataRecord[]>;
hasRecordsAfterDate(name: string, afterDate: Date): Promise<boolean>;
countByDateRange(name: string, startDate: Date, endDate?: Date): Promise<number>;
saveBatch(metadataList: MetadataRow[]): Promise<DataRecord[]>;
deleteBatch(deleteRequests: Array<{
id: string;
name: string;
}>): Promise<void>;
getByIdsBatch(requests: Array<{
id: string;
name: string;
}>): Promise<DataRecord[]>;
getAllAssetsPaginated(name: string, offset?: number, limit?: number): Promise<{
records: DataRecord[];
total: number;
}>;
close(): Promise<void>;
}
//# sourceMappingURL=knex_database_adapter.d.ts.map