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

Commit 5c64b873 by Jan Aagaard Meier

add key value pairs to increment

1 parent 93265d15
Showing with 50 additions and 5 deletions
......@@ -235,17 +235,28 @@ module.exports = (function() {
var identifier = this.__options.hasPrimaryKeys ? this.primaryKeyValues : this.id,
values = {}
if (!Utils._.isArray(fields)) fields = [fields];
if (count === undefined) count = 1;
if (Utils._.isString(fields)) {
values[fields] = count;
} else if (Utils._.isArray(fields)) {
Utils._.each(fields, function (field) {
values[field] = count
})
} else { // Assume fields is key-value pairs
values = fields;
}
return this.QueryInterface.increment(this, this.__factory.tableName, values, identifier)
}
DAO.prototype.decrement = function (fields, count) {
if (!Utils._.isString(fields) && !Utils._.isArray(fields)) { // Assume fields is key-value pairs
Utils._.each(fields, function (value, field) {
fields[field] = -value;
});
}
return this.increment(fields, 0 - count);
}
......
......@@ -18,7 +18,8 @@ describe(Helpers.getTestDialectTeaser("DAO"), function() {
self.User = sequelize.define('User', {
username: { type: DataTypes.STRING },
touchedAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW },
aNumber: { type: DataTypes.INTEGER }
aNumber: { type: DataTypes.INTEGER },
bNumber: { type: DataTypes.INTEGER }
})
},
onComplete: function() {
......@@ -29,7 +30,7 @@ describe(Helpers.getTestDialectTeaser("DAO"), function() {
describe('increment', function () {
before(function (done) {
this.User.create({ id: 1, aNumber: 0 }).done(done)
this.User.create({ id: 1, aNumber: 0, bNumber: 0 }).done(done)
});
it('with array', function (done) {
......@@ -99,11 +100,27 @@ describe(Helpers.getTestDialectTeaser("DAO"), function() {
user1.increment(['aNumber'], 2).done(_done);
});
});
it('with key value pair', function (done) {
var self = this;
// Select something
this.User.find(1).done(function (err, user1) {
user1.increment({ 'aNumber': 1, 'bNumber': 2}).done(function (err, user2) {
self.User.find(1).done(function (err, user3) {
expect(user3.aNumber).toBe(1);
expect(user3.bNumber).toBe(2);
done();
});
});
});
});
});
describe('decrement', function () {
before(function (done) {
this.User.create({ id: 1, aNumber: 0 }).done(done)
this.User.create({ id: 1, aNumber: 0, bNumber: 0 }).done(done)
});
it('with array', function (done) {
......@@ -173,8 +190,24 @@ describe(Helpers.getTestDialectTeaser("DAO"), function() {
user1.decrement(['aNumber'], 2).done(_done);
});
});
});
it('with key value pair', function (done) {
var self = this;
// Select something
this.User.find(1).done(function (err, user1) {
user1.decrement({ 'aNumber': 1, 'bNumber': 2}).done(function (err, user2) {
self.User.find(1).done(function (err, user3) {
expect(user3.aNumber).toBe(-1);
expect(user3.bNumber).toBe(-2);
done();
});
});
});
});
});
/*
describe('default values', function() {
describe('current date', function() {
it('should store a date in touchedAt', function() {
......@@ -281,4 +314,5 @@ describe(Helpers.getTestDialectTeaser("DAO"), function() {
})
})
})
*/
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!