UNPKG

dino-core

Version:

A dependency injection framework for NodeJS applications

37 lines (36 loc) 1.38 kB
import { AbstractInterceptor, type PropertyKey } from './abstract.interceptors'; export declare class TransactionInterceptor extends AbstractInterceptor { private static _instance; /** * Implement Proxy handler get method to provide transactional nature for repositories. * * The transaction environment is defined as: * * ```javascript * try { * obj.beginTransaction(); * const answer = Reflect.get(obj, prop); * obj.completeTransaction(); * return answer; * } catch(e) { * logger.error('unable to complete transaction, rolling-back', e); * obj.rollbackTransaction(); * } finally { * obj.cleanupTransactionResources(); * } * ``` * As such beginTransaction, completeTransaction, rollbackTransaction and eventually cleanupTransactionResources * should be implemented. * * * @param {Injectable} obj The target of this proxy * @param {String} prop the method or property name to access * @returns {Any} * * @public */ intercept(obj: any, prop: PropertyKey): any; isApplicable(obj: any, prop: PropertyKey): boolean; completeTransaction(resolve: any, obj: any, response: any): Promise<void>; rollbackTransaction(reject: any, obj: any, e: any): Promise<void>; static create(): TransactionInterceptor; }