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

Commit 315bea7b by Mick Hansen

Merge branch 'master' into milestones/2.0.0

2 parents d1e7998b 3a149658
......@@ -725,29 +725,31 @@ module.exports = (function() {
DAOFactory.prototype.findOrCreate = function (where, defaults, options) {
var self = this
, params = {}
, values = {}
options = Utils._.extend({
transaction: null
}, options || {})
for (var attrname in where) {
params[attrname] = where[attrname]
if (!(where instanceof Utils.or) && !(where instanceof Utils.and) && !Array.isArray(where)) {
for (var attrname in where) {
values[attrname] = where[attrname]
}
}
return new Utils.CustomEventEmitter(function (emitter) {
self.find({
where: params
where: where
}, {
transaction: options.transaction
}).success(function (instance) {
if (instance === null) {
for (var attrname in defaults) {
params[attrname] = defaults[attrname]
values[attrname] = defaults[attrname]
}
self
.create(params, options)
.create(values, options)
.success(function (instance) {
emitter.emit('success', instance, true)
})
......
......@@ -243,7 +243,7 @@ module.exports = (function() {
addIndexQuery: function(tableName, attributes, options) {
var transformedAttributes = attributes.map(function(attribute) {
if(typeof attribute === 'string') {
return attribute
return this.quoteIdentifier(attribute)
} else {
var result = ""
......@@ -251,7 +251,7 @@ module.exports = (function() {
throw new Error('The following index attribute has no attribute: ' + util.inspect(attribute))
}
result += attribute.attribute
result += this.quoteIdentifier(attribute.attribute)
if (attribute.length) {
result += '(' + attribute.length + ')'
......
......@@ -112,6 +112,20 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
done()
})
})
it("supports .or() (only using default values)", function (done) {
this.User.findOrCreate(
Sequelize.or({username: 'Fooobzz'}, {secretValue: 'Yolo'}),
{username: 'Fooobzz', secretValue: 'Yolo'}
).done(function (err, user, created) {
expect(err).not.to.be.ok
expect(user.username).to.equal('Fooobzz')
expect(user.secretValue).to.equal('Yolo')
expect(created).to.be.true
done()
})
})
})
describe('create', function() {
......
......@@ -71,7 +71,8 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () {
this.queryInterface.dropTable('Users').success(function() {
self.queryInterface.createTable('Users', {
username: DataTypes.STRING,
isAdmin: DataTypes.BOOLEAN
isAdmin: DataTypes.BOOLEAN,
from: DataTypes.STRING
}).success(function() {
done()
})
......@@ -105,6 +106,14 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () {
})
})
})
it('does not fail on reserved keywords', function (done) {
this.queryInterface.addIndex('Users', ['from']).done(function(err) {
expect(err).to.be.null
done()
})
})
})
describe('describeTable', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!