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

Commit eb6bb1e4 by Daniel Durante

Merge pull request #1097 from alubbe/master

ne: null now yields "IS NOT NULL" instead of "!= NULL"
2 parents b1e1d69a 9a759b95
......@@ -650,7 +650,7 @@ module.exports = (function() {
result.push([_key, _value].join("="))
} else {
for (var logic in value) {
var logicResult = Utils.getWhereLogic(logic)
var logicResult = Utils.getWhereLogic(logic, hash[key][logic]);
if (logic === "IN" || logic === "NOT IN") {
var values = Array.isArray(where[i][ii]) ? where[i][ii] : [where[i][ii]]
_where[_where.length] = i + ' ' + logic + ' (' + values.map(function(){ return '?' }).join(',') + ')'
......
......@@ -180,7 +180,7 @@ var Utils = module.exports = {
}
else if (type === "object") {
Object.keys(where[i]).forEach(function(ii) {
logic = self.getWhereLogic(ii)
logic = self.getWhereLogic(ii, where[i][ii]);
switch(logic) {
case 'IN':
......@@ -282,7 +282,7 @@ var Utils = module.exports = {
return Utils._.compactLite([text.join(' AND ')].concat(whereArgs))
},
getWhereLogic: function(logic) {
getWhereLogic: function(logic, val) {
switch (logic) {
case 'join':
return 'JOIN'
......@@ -297,7 +297,7 @@ var Utils = module.exports = {
case 'eq':
return '='
case 'ne':
return '!='
return val ? '!=' : 'IS NOT'
case 'between':
case '..':
return 'BETWEEN'
......
......@@ -1454,8 +1454,9 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
var self = this
this.User.bulkCreate([
{username: 'boo', intVal: 5, theDate: '2013-01-01 12:00'},
{username: 'boo2', intVal: 10, theDate: '2013-01-10 12:00'}
{username: 'boo', intVal: 5, theDate: '2013-01-01 12:00'},
{username: 'boo2', intVal: 10, theDate: '2013-01-10 12:00'},
{username: 'boo3', intVal: null, theDate: null}
]).success(function(user2) {
done()
})
......@@ -1464,10 +1465,10 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
it('should be able to find rows where attribute is in a list of values', function (done) {
this.User.findAll({
where: {
username: ['boo', 'boo2']
username: ['boo', 'boo2', 'boo3']
}
}).success(function(users){
expect(users).to.have.length(2);
expect(users).to.have.length(3);
done()
});
})
......@@ -1475,9 +1476,10 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
it('should not break when trying to find rows using an array of primary keys', function (done) {
this.User.findAll({
where: {
id: [1, 2, 3]
id: [1, 2, 3, 4]
}
}).success(function(users){
expect(users).to.have.length(3)
done();
});
})
......@@ -1507,9 +1509,11 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}).success(function(users) {
expect(users).to.be.an.instanceof(Array)
expect(users).to.have.length(1)
expect(users).to.have.length(2)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
expect(users[1].username).to.equal('boo3')
expect(users[1].intVal).to.equal(null)
done()
})
})
......@@ -1522,6 +1526,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo2')
expect(users[0].intVal).to.equal(10)
done()
......@@ -1536,6 +1541,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
done()
......@@ -1657,6 +1663,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo2')
expect(users[0].intVal).to.equal(10)
done()
......@@ -1672,6 +1679,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
intVal: 10
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo2')
expect(users[0].intVal).to.equal(10)
done()
......@@ -1686,6 +1694,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
done()
......@@ -1701,6 +1710,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
done()
......@@ -1716,6 +1726,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
done()
......@@ -1730,6 +1741,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo2')
expect(users[0].intVal).to.equal(10)
done()
......@@ -1801,6 +1813,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
done()
......@@ -1821,6 +1834,23 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
})
})
it('should be able to find a row using not equal to null logic', function(done) {
this.User.findAll({
where: {
intVal: {
ne: null
}
}
}).success(function(users) {
expect(users).to.have.length(2)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
expect(users[1].username).to.equal('boo2')
expect(users[1].intVal).to.equal(10)
done()
})
})
it('should be able to find multiple users with any of the special where logic properties', function(done) {
this.User.findAll({
where: {
......@@ -1829,6 +1859,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}
}
}).success(function(users) {
expect(users).to.have.length(2)
expect(users[0].username).to.equal('boo')
expect(users[0].intVal).to.equal(5)
expect(users[1].username).to.equal('boo2')
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!