不要怂,就是干,撸起袖子干!

Commit 01f8cc37 by Sascha Depold

first steps for transactions

1 parent d4d2f7be
......@@ -5,6 +5,7 @@ var url = require("url")
, DataTypes = require('./data-types')
, DAOFactoryManager = require("./dao-factory-manager")
, QueryInterface = require("./query-interface")
, Transaction = require("./transaction")
module.exports = (function() {
/**
......@@ -108,7 +109,7 @@ module.exports = (function() {
maxConcurrentQueries: this.options.maxConcurrentQueries,
dialectOptions: this.options.dialectOptions,
}
try {
var ConnectorManager = require("./dialects/" + this.options.dialect + "/connector-manager")
} catch(err) {
......@@ -249,7 +250,7 @@ module.exports = (function() {
// make path relative to the caller
var callerFilename = Utils.stack()[1].getFileName()
, callerPath = Path.dirname(callerFilename)
path = Path.resolve(callerPath, path)
}
......@@ -372,5 +373,12 @@ module.exports = (function() {
return new Utils.literal(val)
}
Sequelize.prototype.transaction = function(_options, _callback) {
var options = (typeof _options === 'function') ? {} : _options
, callback = (typeof _options === 'function') ? _options : _callback
callback(new Transaction(options))
}
return Sequelize
})()
var Utils = require('./utils')
var Transaction = module.exports = function(options) {
this.options = options || {}
this.id = Utils.generateUUID()
}
......@@ -488,7 +488,6 @@ var Utils = module.exports = {
return stack;
},
now: function(dialect) {
var now = new Date()
if(dialect != "postgres") now.setMilliseconds(0)
......@@ -524,6 +523,13 @@ var Utils = module.exports = {
},
literal: function (val) {
this.val = val
},
generateUUID: function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8)
return v.toString(16)
})
}
}
......
......@@ -465,5 +465,26 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
})
})
describe('transaction', function() {
it('is a transaction method available', function() {
expect(Support.Sequelize).to.respondTo('transaction')
})
it('passes a transaction object to the callback', function(done) {
var Transaction = require(__dirname + '/../lib/transaction')
this.sequelize.transaction(function(t) {
expect(t).to.be.instanceOf(Transaction)
done()
})
})
it("creates a new connection", function(done) {
this.sequelize.transaction(function(t) {
done()
})
})
})
})
})
var chai = require('chai')
, expect = chai.expect
, Support = require(__dirname + '/support')
, Transaction = require(__dirname + '/../lib/transaction')
describe(Support.getTestDialectTeaser("Transaction"), function () {
describe('constructor', function() {
it('stores options', function() {
var transaction = new Transaction()
expect(transaction.options).to.be.an.instanceOf(Object)
})
it('generates an identifier', function() {
var transaction = new Transaction()
expect(transaction.id).to.exist
})
})
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!