@multiple-transaction-manager/mssql
MSSQL context implementation for multiple-transaction-manager library.
API
Classes
MssqlDBContext
constructor(txnMngr, connPool, isolationLevel)
-
txnMngr
: {MultiTxnMngr} The multiple transaction manager to to bind with the context. -
connPool
: {ConnectionPool} The MSSQL connection pool obtain the session from. -
isolationLevel
: {IIsolationLevel} The MSSQL isolation level. - Returns: {MssqlDBContext} The created MssqlDBContext instance.
addFunctionTask(execFunc)
Adds a task to the transaction manager.
-
execFunc
: {execFunc: (txn: Transaction, task: Task) => Promise<IResult<unknown> | undefined> | undefined} The function to be executes in promise. MSSQL connection is provided to the function. - Returns: {MssqlDBTask} Returns the created MssqlDBTask instance.
addTask(querySql: string, params?: unknown | undefined)
A shortcut to add a SQL task to the transaction manager.
-
querySql
: {string} The query string to be executes in promise. -
params
: {unknown | undefined} Optional parameter object to bind SQL statement variables. - Returns: {MssqlDBTask} The created MssqlDBTask instance.
MssqlDBTask
constructor(context, querySql, params, execFunc)
-
context
: {MssqlDBContext} The MssqlDBContext to to bind with the task. -
querySql
: {string} The query string to be executes in promise. Ignored if execFunc parameter is provided. -
params
: {unknown | undefined} Optional parameter object to bind SQL statement variables. Ignored if execFunc parameter is provided. -
execFunc
: {execFunc: (txn: Transaction, task: Task) => Promise<IResult<unknown> | undefined> | undefined} The function to be executes in promise. MSSQL connection is provided to the function. - Returns: {MssqlDBTask} The created MssqlDBTask instance.
Example
https://github.com/kaplanke/mtxn-mssql/blob/master/test/mtxn.mssql.test.ts
// init manager & context
const txnMngr: MultiTxnMngr = new MultiTxnMngr();
const mssqlContext = new MssqlDBContext(txnMngr, pool);
const functionContext = new FunctionContext(txnMngr);
// Add first step
mssqlContext.addTask("DELETE FROM test_table");
// Add second step
mssqlContext.addTask("INSERT INTO test_table(id, name) VALUES (@id, @name)", [["id", TYPES.Numeric(38), 1], ["name", TYPES.VarChar(100), "Dave"]]);
// Add third step
functionContext.addTask(
(task) => { return new Promise((resolve, _) => { console.log("All done."); resolve(task); }); },
null, // optional params
(task) => { return new Promise((resolve, _) => { console.log("On Txn Commit..."); resolve(task); }); },
(task) => { return new Promise((resolve, _) => { console.log("On Txn Rollback..."); resolve(task); }); }
);
// jest
await expect(txnMngr.exec()).resolves.not.toBeNull();