UNPKG

@naturalcycles/db-lib

Version:

Lowest Common Denominator API to supported Databases

39 lines (38 loc) 2.34 kB
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>; }