@multiple-transaction-manager/mysql
v1.0.5
Published
Multiple Transaction Manager Mysql adapter
Downloads
5
Maintainers
Readme
@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();