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

Commit f7aea3b0 by Sascha Depold

added array usage for same operation on multiple objects via chainqueries + adde…

…d compatibility for arbitrary amount of parameters
1 parent d2d38406
Showing with 27 additions and 9 deletions
...@@ -61,19 +61,37 @@ var classMethods = { ...@@ -61,19 +61,37 @@ var classMethods = {
return Sequelize.Helper.evaluateTemplate(query, values) return Sequelize.Helper.evaluateTemplate(query, values)
}, },
chainQueries: function(queries, callback) { chainQueries: function( ) {
// queries = [{method: object}, {method: object, params: [1,2,3]}, {method: object}] // queries = [{method: object}, {method: object, params: [1,2,3]}, {method: object}]
// example: Sequelize.chainQueries({save: a}, {destroy: b}, callback)
// example: Sequelize.chainQueries({save: [a, b]}, callback)
var queries = [],
callback = null
for(var i = 0; i < arguments.length; i++) {
var arg = arguments[i]
if(typeof arg == 'function') callback = arg
else if(Array.isArray(arg)) arg.forEach(function(o) { queries.push(o) })
else queries.push(arg)
}
var executeQuery = function(index) { var executeQuery = function(index) {
var queryHash = queries[index] var queryHash = queries[index],
var method = Sequelize.Helper.Array.without(Sequelize.Helper.Hash.keys(queryHash), "params")[0] method = Sequelize.Helper.Array.without(Sequelize.Helper.Hash.keys(queryHash), "params")[0],
var object = queryHash[method] object = queryHash[method],
var iterator = function() { iterator = function() {
if(queries.length > (index + 1)) executeQuery(index + 1) if(queries.length > (index + 1)) executeQuery(index + 1)
else if (callback) callback() else if (callback) callback()
} }
if(!Array.isArray(object)) object = [object]
object[method].apply(object, Sequelize.Helper.Array.join(queryHash.params || [], [iterator])) object.forEach(function(o) {
o[method].apply(o, Sequelize.Helper.Array.join(queryHash.params || [], [iterator]))
})
} }
if(queries.length > 0) executeQuery(0) if(queries.length > 0) executeQuery(0)
else if (callback) callback() else if (callback) callback()
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!