@naturalcycles/db-lib
Version:
Lowest Common Denominator API to supported Databases
40 lines (39 loc) • 2.54 kB
TypeScript
import type { JsonSchemaRootObject } from '@naturalcycles/js-lib/json-schema';
import { type ObjectWithId } from '@naturalcycles/js-lib/types';
import type { ReadableTyped } from '@naturalcycles/nodejs-lib/stream';
import { BaseCommonDB } from '../../commondb/base.common.db.js';
import type { CommonDB, CommonDBSupport } from '../../commondb/common.db.js';
import type { CommonDBOptions, CommonDBSaveOptions, CommonDBStreamOptions, DBSaveBatchOperation, RunQueryResult } from '../../db.model.js';
import type { DBQuery } from '../../query/dbQuery.js';
import type { FileDBCfg } from './file.db.model.js';
/**
* Provides barebone implementation for "whole file" based CommonDB.
* "whole file" means that the persistence layer doesn't allow any querying,
* but allows to read the whole file or save the whole file.
* For example, Google Cloud Storage / S3 that store ndjson files will be such persistence.
*
* In contrast with InMemoryDB, FileDB stores *nothing* in memory.
* Each load/query operation loads *whole* file from the persitence layer.
* Each save operation saves *whole* file to the persistence layer.
*/
export declare class FileDB extends BaseCommonDB implements CommonDB {
support: CommonDBSupport;
constructor(cfg: FileDBCfg);
cfg: FileDBCfg;
ping(): Promise<void>;
getTables(): Promise<string[]>;
getByIds<ROW extends ObjectWithId>(table: string, ids: string[], _opt?: CommonDBOptions): Promise<ROW[]>;
saveBatch<ROW extends ObjectWithId>(table: string, rows: ROW[], _opt?: CommonDBSaveOptions<ROW>): Promise<void>;
runQuery<ROW extends ObjectWithId>(q: DBQuery<ROW>, _opt?: CommonDBOptions): Promise<RunQueryResult<ROW>>;
runQueryCount<ROW extends ObjectWithId>(q: DBQuery<ROW>, _opt?: CommonDBOptions): Promise<number>;
streamQuery<ROW extends ObjectWithId>(q: DBQuery<ROW>, opt?: CommonDBStreamOptions): ReadableTyped<ROW>;
deleteByQuery<ROW extends ObjectWithId>(q: DBQuery<ROW>, _opt?: CommonDBOptions): Promise<number>;
deleteByIds(table: string, ids: string[], _opt?: CommonDBOptions): Promise<number>;
getTableSchema<ROW extends ObjectWithId>(table: string): Promise<JsonSchemaRootObject<ROW>>;
loadFile<ROW extends ObjectWithId>(table: string): Promise<ROW[]>;
saveFile<ROW extends ObjectWithId>(table: string, _rows: ROW[]): Promise<void>;
saveFiles<ROW extends ObjectWithId>(ops: DBSaveBatchOperation<ROW>[]): Promise<void>;
sortRows<ROW extends ObjectWithId>(rows: ROW[]): ROW[];
private logStarted;
private logFinished;
}