Skip to content

kaplanke/mtxn-mssql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published