@naturalcycles/db-lib
Version:
Lowest Common Denominator API to supported Databases
39 lines (38 loc) • 2.34 kB
TypeScript
import type { CommonLogger } from '@naturalcycles/js-lib/log';
import type { BaseDBEntity, Unsaved } from '@naturalcycles/js-lib/types';
import type { DBTransaction } from '../db.model.js';
import type { AnyDao, CommonDao, InferID } from './common.dao.js';
import type { CommonDaoOptions, CommonDaoReadOptions, CommonDaoSaveBatchOptions, CommonDaoSaveOptions } from './common.dao.model.js';
/**
* Transaction context.
* Has similar API than CommonDao, but all operations are performed in the context of the transaction.
*/
export declare class CommonDaoTransaction {
tx: DBTransaction;
private logger;
constructor(tx: DBTransaction, logger: CommonLogger);
/**
* Commits the underlying DBTransaction.
* May throw.
*/
commit(): Promise<void>;
/**
* Perform a graceful rollback without throwing/re-throwing any error.
* Never throws.
*/
rollback(): Promise<void>;
getById<BM extends BaseDBEntity, DBM extends BaseDBEntity, ID extends string = BM['id']>(dao: CommonDao<BM, DBM, ID>, id?: ID | null, opt?: CommonDaoReadOptions): Promise<BM | null>;
getByIds<BM extends BaseDBEntity, DBM extends BaseDBEntity, ID extends string = BM['id']>(dao: CommonDao<BM, DBM, ID>, ids: ID[], opt?: CommonDaoReadOptions): Promise<BM[]>;
save<BM extends BaseDBEntity, DBM extends BaseDBEntity>(dao: CommonDao<BM, DBM>, bm: Unsaved<BM>, opt?: CommonDaoSaveOptions<BM, DBM>): Promise<BM>;
saveBatch<BM extends BaseDBEntity, DBM extends BaseDBEntity>(dao: CommonDao<BM, DBM>, bms: Unsaved<BM>[], opt?: CommonDaoSaveBatchOptions<DBM>): Promise<BM[]>;
/**
* DaoTransaction.patch does not load from DB.
* It assumes the bm was previously loaded in the same Transaction, hence could not be
* concurrently modified. Hence it's safe to not sync with DB.
*
* So, this method is a rather simple convenience "Object.assign and then save".
*/
patch<BM extends BaseDBEntity, DBM extends BaseDBEntity, ID extends string = BM['id']>(dao: CommonDao<BM, DBM, ID>, bm: BM, patch: Partial<BM>, opt?: CommonDaoSaveOptions<BM, DBM>): Promise<BM>;
deleteById<DAO extends AnyDao>(dao: DAO, id?: InferID<DAO> | null, opt?: CommonDaoOptions): Promise<number>;
deleteByIds<DAO extends AnyDao>(dao: DAO, ids: InferID<DAO>[], opt?: CommonDaoOptions): Promise<number>;
}