1.0.5 • Published 1 year ago

@multiple-transaction-manager/mssql v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@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\ | 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\ | 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();