mariadb-transact

0.7.4 • Public • Published

mariadb-transact

A transaction manager for the node.js MariaSQL module that uses promises. This module is essentially a convenience wrapper for node-mariasql with some extended functionality.

Install

npm install mariadb-transact

Example

CoffeeScript

TransactionManager = require "mariadb-transact"

sqlcfg =
  user: "USER"
  password: "PASSWORD"
  host: "HOST"
  db: "DATABASE"
  metadata: true

transact = new TransactionManager(sqlcfg)

transact.init().then ->
  transact.basic().then (sql) ->
    sql.fetchArray("SHOW DATABASES")
    .then (res) ->
      console.log res
      
  .then ->
    transact.begin()
    
  .then (sql) ->
    sql.command("DELETE FROM mytable WHERE id=3")
    
    .then (res) ->
      console.log res
      sql.commit()
      
    .then ->
      transact.close()
      
.catch (err) ->
  console.error err.stack

JavaScript

var TransactionManager = require("mariadb-transact");

var sqlcfg = {
user: "USER",
password: "PASSWORD",
host: "HOST",
db: "DATABASE",
metadata: true
};

var transact = new TransactionManager(sqlcfg);

transact.init().then(function() {
  return transact.basic().then(function(sql) {
    return sql.fetchArray("SHOW DATABASES").then(function(res) {
      return console.log(res);
    });
  }).then(function() {
    return transact.begin();
  }).then(function(sql) {
    return sql.command("DELETE FROM mytable WHERE id=3").then(function(res) {
      console.log(res);
      return sql.commit();
    }).then(function() {
      return transact.close();
    });
  });
})["catch"](function(err) {
  return console.error(err.stack);
});

API

require('mariadb-transact') returns a TransactionManager object.

TransactionManager properties

  • log - < Logger > - A Winston-style logging object. Default is a stub.

TransactionManager events

  • error(< Error >err) - An error occurred.

  • init() - The manager has been initialized.

TransactionManager methods

  • contructor(< object >config) - Create and return a new TransactionManager instance. The config object is equivalent to the Client config object in the node-mariasql library, but takes an additional parameter and extends on the metadata parameter:

    • metadata - < boolean > - Automatically convert result data into appropriate types. Default: false

    • poolsize - < integer > - Size of the connection pool. Default: 20

  • init() - < Promise >() - Initializes the database connection and returns a promise that fulfills when it is connected.

  • basic() - < Promise>(< Client >client) - Returns a promise that fulfills with a non-transaction-safe Client object.

  • begin() - < Promise>(< Client >client) - Returns a promise that fulfills with a transaction-safe Client object from the connection pool. Transaction-safe Client objects must always be completed using their commit or rollback method, otherwise they will not complete or return to the pool.

  • close() - < Promise >() - Closes connection and returns a promise that fulfills when complete.

Client methods

  • command(< string >query, < object >params) - < Promise >(< object >result) - Executes SQL query, returns promise that fulfills with a result object containing the following elements:

    • affectedRows - < integer > - Number of rows affected by the command.

    • insertId - < integer > - Last auto-increment ID of insert command.

    • numRows - < integer > - Number of returned rows.

  • commit() - < Promise >() - Commits a transaction. Promise fulfulls when done.

  • fetchArray(< string >sql, < object >params) - < Promise >(< Array >results) - Executes SQL query, returns promise that fulfills with a result array.

  • fetchOne(< string >sql, < object >params) - < Promise >(< object >result) - Executes SQL query, returns promise that fulfills with a single result object. This command always returns the first result row of the query.

  • rollback() - < Promise >() - Rolls back a transaction. Promise fulfulls when done.

Package Sidebar

Install

npm i mariadb-transact

Weekly Downloads

6

Version

0.7.4

License

none

Last publish

Collaborators

  • lukequest