Change default create method from save to create for remoting

This commit is contained in:
Ritchie Martori 2013-07-02 20:28:00 -07:00
parent c8bfc5802a
commit 7684fe2946
3 changed files with 17 additions and 6 deletions

View File

@ -162,6 +162,7 @@ DataAccessObject.create = function (data, callback) {
DataAccessObject.create.shared = true; DataAccessObject.create.shared = true;
DataAccessObject.create.accepts = {arg: 'data', type: 'object'}; DataAccessObject.create.accepts = {arg: 'data', type: 'object'};
DataAccessObject.create.returns = {arg: 'data', type: 'object'}; DataAccessObject.create.returns = {arg: 'data', type: 'object'};
DataAccessObject.create.http = {verb: 'post', path: '/'};
function stillConnecting(schema, obj, args) { function stillConnecting(schema, obj, args) {
if (schema.connected) return false; // Connected if (schema.connected) return false; // Connected
@ -532,7 +533,6 @@ DataAccessObject.prototype.save = function (options, callback) {
DataAccessObject.prototype.save.shared = true; DataAccessObject.prototype.save.shared = true;
DataAccessObject.prototype.save.returns = {arg: 'obj', type: 'object'}; DataAccessObject.prototype.save.returns = {arg: 'obj', type: 'object'};
DataAccessObject.prototype.save.http = [ DataAccessObject.prototype.save.http = [
{verb: 'post', path: '/'},
{verb: 'put', path: '/'} {verb: 'put', path: '/'}
]; ];

View File

@ -111,7 +111,9 @@ ModelBuilder.prototype.define = function defineClass(className, properties, sett
// every class can receive hash of data as optional param // every class can receive hash of data as optional param
var ModelClass = function ModelConstructor(data, schema) { var ModelClass = function ModelConstructor(data, schema) {
ModelBaseClass.apply(this, arguments); ModelBaseClass.apply(this, arguments);
hiddenProperty(this, 'schema', schema || this.constructor.schema); if(!this.schema) {
hiddenProperty(this, 'schema', schema || this.constructor.schema);
}
}; };
// mix in EventEmitter // mix in EventEmitter
@ -199,7 +201,13 @@ ModelBuilder.prototype.define = function defineClass(className, properties, sett
} }
}); });
return schema.define(className, p, s, ModelClass); var c = schema.define(className, p, s, ModelClass);
if(typeof c.setup === 'function') {
c.setup.call(c);
}
return c;
} }
ModelClass.registerProperty = function (attr) { ModelClass.registerProperty = function (attr) {

View File

@ -34,7 +34,10 @@ ModelBaseClass.prototype._initProperties = function (data, applySetters) {
var self = this; var self = this;
var ctor = this.constructor; var ctor = this.constructor;
var ds = ctor.schema.definitions[ctor.modelName]; var ds = {
properties: ctor.properties,
setters: ctor.settings
};
var properties = ds.properties; var properties = ds.properties;
data = data || {}; data = data || {};
@ -133,7 +136,7 @@ ModelBaseClass.defineProperty = function (prop, params) {
}; };
ModelBaseClass.whatTypeName = function (propName) { ModelBaseClass.whatTypeName = function (propName) {
var prop = this.schema.definitions[this.modelName].properties[propName]; var prop = this.properties[propName];
if (!prop || !prop.type) { if (!prop || !prop.type) {
throw new Error('Undefined type for ' + this.modelName + ':' + propName); throw new Error('Undefined type for ' + this.modelName + ':' + propName);
} }