@multiple-transaction-manager/mysql
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

@multiple-transaction-manager/mysql

MySql context implementation for multiple-transaction-manager library.

API

Classes

MysqlDBContext

constructor(txnMngr, connPool)

  • txnMngr: {MultiTxnMngr} The multiple transaction manager to to bind with the context.
  • connPool: {Pool} The MySql connection pool obtain the session from.
  • Returns: {MysqlDBContext} The created MysqlDBContext instance.

addFunctionTask(execFunc)

Adds a task to the transaction manager.

  • execFunc: {execFunc: (txn: PoolConnection, task: Task) => Promise<unknown | undefined>) | undefined} The function to be executes in promise. MySql connection is provided to the function.
  • Returns: {MysqlDBTask} Returns the created MysqlDBTask 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: {MysqlDBTask} The created MysqlDBTask instance.

MysqlDBTask

constructor(context, querySql, params, execFunc)

  • context: {MysqlDBContext} The MysqlDBContext 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: PoolConnection, task: Task) => Promise<unknown | undefined>) | undefined} The function to be executes in promise. MySql connection is provided to the function.
  • Returns: {MysqlDBTask} The created MysqlDBTask instance.

Example

https://github.com/kaplanke/mtxn-mysql/blob/master/test/mtxn.mysql.test.ts

    // init manager & context
    const txnMngr: MultiTxnMngr = new MultiTxnMngr();
    const mysqlContext = new MysqlDBContext(txnMngr, pool);
    const functionContext = new FunctionContext(txnMngr);

    // Add first step
    mysqlContext.addTask("DELETE FROM test_table");

    // Add second step
    mysqlContext.addTask("INSERT INTO test_table(id, name) VALUES (:id, :name)", { "id": 1, "name": "Dave" });

    // Add third step
    functionContext.addTask(
        (task) => { return new Promise((resolve, _reject) => { console.log("All done."); resolve(task); }); },
        null, // optional params
        (task) => { return new Promise((resolve, _reject) => { console.log("On Txn Commit..."); resolve(task); }); },
        (task) => { return new Promise((resolve, _reject) => { console.log("On Txn Rollback..."); resolve(task); }); }
    );

    await expect(txnMngr.exec()).resolves.not.toBeNull();

Package Sidebar

Install

npm i @multiple-transaction-manager/mysql

Weekly Downloads

0

Version

1.0.5

License

MIT

Unpacked Size

17.9 kB

Total Files

9

Last publish

Collaborators

  • kaplanke