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

Commit 0ca7c044 by Sascha Depold

functions without parameters are getters now

1 parent cabfdfee
...@@ -27,16 +27,16 @@ ModelDefinition.prototype.sync = function(options) { ...@@ -27,16 +27,16 @@ ModelDefinition.prototype.sync = function(options) {
.on('failure', function() { self.emit('failure') }) .on('failure', function() { self.emit('failure') })
} }
if(options.force) this.drop().on('success', function() { doQuery() }) if(options.force) this.drop.on('success', function() { doQuery() })
else doQuery() else doQuery()
return this return this
} }
ModelDefinition.prototype.drop = function() { ModelDefinition.prototype.__defineGetter__('drop', function() {
var query = QueryGenerator.dropTableQuery(this.tableName) var query = QueryGenerator.dropTableQuery(this.tableName)
return this.modelManager.sequelize.query(query) return this.modelManager.sequelize.query(query)
} })
ModelDefinition.prototype.build = function(values) { ModelDefinition.prototype.build = function(values) {
var instance = new Model(values) var instance = new Model(values)
...@@ -48,5 +48,5 @@ ModelDefinition.prototype.build = function(values) { ...@@ -48,5 +48,5 @@ ModelDefinition.prototype.build = function(values) {
} }
ModelDefinition.prototype.create = function(values) { ModelDefinition.prototype.create = function(values) {
return this.build(values).save() return this.build(values).save
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ var Model = module.exports = function(values) { ...@@ -9,6 +9,7 @@ var Model = module.exports = function(values) {
this.attributes = [] this.attributes = []
this.addAttribute('id', null) // a newly created model has no id this.addAttribute('id', null) // a newly created model has no id
// add all passed values to the model and store the attribute names in this.attributes
Utils._.map(values, function(value, key) { self.addAttribute(key, value) }) Utils._.map(values, function(value, key) { self.addAttribute(key, value) })
} }
Utils.addEventEmitter(Model) Utils.addEventEmitter(Model)
...@@ -20,29 +21,30 @@ Model.Events = { ...@@ -20,29 +21,30 @@ Model.Events = {
destroy: 'DestroyQuery' destroy: 'DestroyQuery'
} }
var instanceMethods = { Model.prototype.addAttribute = function(attribute, value) {
save: function() { this[attribute] = value
if(this.isNewRecord) { this.attributes.push(attribute)
var query = QueryGenerator.insertQuery(this.definition.tableName, this.values) }
return this.definition.modelManager.sequelize.query(query)
} else { Model.prototype.__defineGetter__('save', function() {
var query = QueryGenerate.updateQuery(this.definition.tableName, this.values, this.id) if(this.isNewRecord) {
return this.definition.modelManager.sequelize.query(query) var query = QueryGenerator.insertQuery(this.definition.tableName, this.values)
} return this.definition.modelManager.sequelize.query(query)
}, } else {
destroy: function() { var query = QueryGenerate.updateQuery(this.definition.tableName, this.values, this.id)
var query = QueryGenerate.deleteQuery(this.definition.tableName, this.id)
return this.definition.modelManager.sequelize.query(query) return this.definition.modelManager.sequelize.query(query)
},
addAttribute: function(attribute, value) {
this[attribute] = value
this.attributes.push(attribute)
} }
} })
Model.prototype.__defineGetter__('destroy', function() {
var query = QueryGenerate.deleteQuery(this.definition.tableName, this.id)
return this.definition.modelManager.sequelize.query(query)
})
Model.prototype.__defineGetter__('isNewRecord', function() { Model.prototype.__defineGetter__('isNewRecord', function() {
return this.id == null return this.id == null
}) })
Model.prototype.__defineGetter__('values', function() { Model.prototype.__defineGetter__('values', function() {
var result = {} var result = {}
, self = this , self = this
...@@ -55,5 +57,4 @@ Model.prototype.__defineGetter__('values', function() { ...@@ -55,5 +57,4 @@ Model.prototype.__defineGetter__('values', function() {
}) })
/* Add the instance methods to Model */ /* Add the instance methods to Model */
Utils._.map(instanceMethods, function(fct, name) { Model.prototype[name] = fct})
Utils._.map(Mixin.instanceMethods, function(fct, name) { Model.prototype[name] = fct}) Utils._.map(Mixin.instanceMethods, function(fct, name) { Model.prototype[name] = fct})
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!