Code coverage report for upstream/lib/transaction.js

Statements: 91.67% (22 / 24)      Branches: 50% (1 / 2)      Functions: 81.82% (9 / 11)      Lines: 91.67% (22 / 24)     

All files » upstream/lib/ » transaction.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 771     1 12 12 12           1   1             1                 1 12             1 12     12 12 12 12           1 12               1 12             1 12              
var Utils = require('./utils')
  , util  = require('util')
 
var Transaction = module.exports = function(sequelize, options) {
  this.sequelize = sequelize
  this.id        = Utils.generateUUID()
  this.options   = Utils._.extend({
    autocommit: true,
    isolationLevel: Transaction.ISOLATION_LEVELS.REPEATABLE_READ
  }, options || {})
}
 
util.inherits(Transaction, Utils.CustomEventEmitter)
 
Transaction.ISOLATION_LEVELS = {
  READ_UNCOMMITTED: "READ UNCOMMITTED",
  READ_COMMITTED: "READ COMMITTED",
  REPEATABLE_READ: "REPEATABLE READ",
  SERIALIZABLE: "SERIALIZABLE"
}
 
Transaction.prototype.commit = function() {
  return this
    .sequelize
    .getQueryInterface()
    .commitTransaction(this, {})
    .proxy(this)
}
 
 
Transaction.prototype.rollback = function() {
  return this
    .sequelize
    .getQueryInterface()
    .rollbackTransaction(this, {})
    .proxy(this)
}
 
Transaction.prototype.prepareEnvironment = function(callback) {
  var self             = this
    , connectorManager = self.sequelize.transactionManager.getConnectorManager(this.id)
 
  this.begin(function() {
    self.setIsolationLevel(function() {
      self.setAutocommit(function() {
        connectorManager.afterTransactionSetup(callback)
      })
    })
  })
}
 
Transaction.prototype.begin = function(callback) {
  this
    .sequelize
    .getQueryInterface()
    .startTransaction(this, {})
    .success(callback)
 
}
 
Transaction.prototype.setAutocommit = function(callback) {
  this
    .sequelize
    .getQueryInterface()
    .setAutocommit(this, this.options.autocommit)
    .success(callback)
}
 
Transaction.prototype.setIsolationLevel = function(callback) {
  this
    .sequelize
    .getQueryInterface()
    .setIsolationLevel(this, this.options.isolationLevel)
    .success(callback)
    .error(function(err) { console.log(err) })
}