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

Commit dec57cb4 by Jan Aagaard Meier

Merge pull request #933 from durango/forceparanoid You can now delete paranoid r…

…ecords manually by submitting a {force: tru...
2 parents efd6afe0 535066ee
......@@ -838,6 +838,9 @@ module.exports = (function() {
* @return {Object} A promise which fires `success`, `error`, `complete` and `sql`.
*/
DAOFactory.prototype.destroy = function(where, options) {
options = options || {}
options.force = options.force === undefined ? false : Boolean(options.force)
var self = this
, query = null
, args = []
......@@ -850,7 +853,7 @@ module.exports = (function() {
where = newWhere || where
if (self.options.timestamps && self.options.paranoid) {
if (self.options.timestamps && self.options.paranoid && options.force === false) {
var attr = Utils._.underscoredIf(self.options.deletedAt, self.options.underscored)
var attrValueHash = {}
attrValueHash[attr] = Utils.now()
......
......@@ -329,6 +329,9 @@ module.exports = (function() {
}
DAO.prototype.destroy = function(options) {
options = options || {}
options.force = options.force === undefined ? false : Boolean(options.force)
var self = this
, query = null
......@@ -338,7 +341,7 @@ module.exports = (function() {
return emitter.emit('error', err)
}
if (self.__options.timestamps && self.__options.paranoid) {
if (self.__options.timestamps && self.__options.paranoid && options.force === false) {
var attr = Utils._.underscoredIf(self.__options.deletedAt, self.__options.underscored)
self.dataValues[attr] = new Date()
query = self.save(options)
......
......@@ -1566,6 +1566,49 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
})
})
})
it('should delete a paranoid record if I set force to true', function(done) {
var self = this
var User = this.sequelize.define('paranoiduser', {
username: Sequelize.STRING
}, { paranoid: true })
User.sync({ force: true }).success(function() {
User.bulkCreate([
{username: 'Bob'},
{username: 'Tobi'},
{username: 'Max'},
{username: 'Tony'}
]).success(function() {
User.find({where: {username: 'Bob'}}).success(function(user) {
user.destroy({force: true}).success(function() {
User.find({where: {username: 'Bob'}}).success(function(user) {
expect(user).to.be.null
User.find({where: {username: 'Tobi'}}).success(function(tobi) {
tobi.destroy().success(function() {
self.sequelize.query('SELECT * FROM paranoidusers WHERE username=\'Tobi\'', null, {raw: true, plain: true}).success(function(result) {
expect(result.username).to.equal('Tobi')
User.destroy({username: 'Tony'}).success(function() {
self.sequelize.query('SELECT * FROM paranoidusers WHERE username=\'Tony\'', null, {raw: true, plain: true}).success(function(result) {
expect(result.username).to.equal('Tony')
User.destroy({username: ['Tony', 'Max']}, {force: true}).success(function() {
self.sequelize.query('SELECT * FROM paranoidusers', null, {raw: true}).success(function(users) {
expect(users).to.have.length(1)
expect(users[0].username).to.equal('Tobi')
done()
})
})
})
})
})
})
})
})
})
})
})
})
})
})
describe('find', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!