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

Commit 71ca559e by Sascha Depold

simplified local query function

1 parent 31480a9c
...@@ -16,13 +16,20 @@ var ModelDefinition = module.exports = function(name, attributes, options) { ...@@ -16,13 +16,20 @@ var ModelDefinition = module.exports = function(name, attributes, options) {
} }
Utils.addEventEmitter(ModelDefinition) Utils.addEventEmitter(ModelDefinition)
ModelDefinition.prototype.query = function() {
var args = Utils._.map(arguments, function(arg, _) { return arg })
, s = this.modelManager.sequelize
args.push(this)
return s.query.apply(s, args)
}
ModelDefinition.prototype.sync = function(options) { ModelDefinition.prototype.sync = function(options) {
options = options || {} options = options || {}
var self = this var self = this
var doQuery = function() { var doQuery = function() {
self.modelManager.sequelize self.query(QueryGenerator.createTableQuery(self.tableName, self.attributes))
.query(QueryGenerator.createTableQuery(self.tableName, self.attributes), self)
.on('success', function() { self.emit('success', self) }) .on('success', function() { self.emit('success', self) })
.on('failure', function() { self.emit('failure', self) }) .on('failure', function() { self.emit('failure', self) })
} }
...@@ -34,10 +41,22 @@ ModelDefinition.prototype.sync = function(options) { ...@@ -34,10 +41,22 @@ ModelDefinition.prototype.sync = function(options) {
} }
ModelDefinition.prototype.__defineGetter__('drop', function() { ModelDefinition.prototype.__defineGetter__('drop', function() {
var query = QueryGenerator.dropTableQuery(this.tableName, this.id) return this.query(QueryGenerator.dropTableQuery(this.tableName, this.id))
return this.modelManager.sequelize.query(query, this) })
ModelDefinition.prototype.__defineGetter__('all', function() {
return this.query(QueryGenerator.selectQuery(this.tableName))
}) })
ModelDefinition.prototype.findAll = function(options) {
return this.query(QueryGenerator.selectQuery(this.tableName, options))
}
ModelDefinition.prototype.find = function(options) {
options.limit = 1
return this.findAll(options)
}
ModelDefinition.prototype.build = function(values) { ModelDefinition.prototype.build = function(values) {
var instance = new Model(values) var instance = new Model(values)
, self = this , self = this
......
...@@ -26,19 +26,23 @@ Model.prototype.addAttribute = function(attribute, value) { ...@@ -26,19 +26,23 @@ Model.prototype.addAttribute = function(attribute, value) {
this.attributes.push(attribute) this.attributes.push(attribute)
} }
Model.prototype.query = function() {
var args = Utils._.map(arguments, function(arg, _) { return arg })
, s = this.definition.modelManager.sequelize
args.push(this)
return s.query.apply(s, args)
}
Model.prototype.__defineGetter__('save', function() { Model.prototype.__defineGetter__('save', function() {
if(this.isNewRecord) { if(this.isNewRecord)
var query = QueryGenerator.insertQuery(this.definition.tableName, this.values) return this.query(QueryGenerator.insertQuery(this.definition.tableName, this.values))
return this.definition.modelManager.sequelize.query(query, this) else
} else { return this.query(QueryGenerator.updateQuery(this.definition.tableName, this.values, this.id))
var query = QueryGenerator.updateQuery(this.definition.tableName, this.values, this.id)
return this.definition.modelManager.sequelize.query(query, this)
}
}) })
Model.prototype.__defineGetter__('destroy', function() { Model.prototype.__defineGetter__('destroy', function() {
var query = QueryGenerator.deleteQuery(this.definition.tableName, this.id) return this.query(QueryGenerator.deleteQuery(this.definition.tableName, this.id))
return this.definition.modelManager.sequelize.query(query, this)
}) })
Model.prototype.__defineGetter__('isNewRecord', function() { Model.prototype.__defineGetter__('isNewRecord', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!