Corrected generateModelDefinition() to scan for model references in remote returns and errors

This commit is contained in:
Shelby Sanders 2014-08-06 00:20:15 -07:00
parent cf3e6161ef
commit 1eddcade09
1 changed files with 30 additions and 1 deletions

View File

@ -18,6 +18,18 @@ var modelHelper = module.exports = {
* @return {Object} Associated model definition.
*/
generateModelDefinition: function generateModelDefinition(modelClass, definitions) {
var processType = function(app, modelName, out) {
if (modelName) {
if (modelName.indexOf('[') == 0) {
modelName = modelName.replace(/[\[\]]/g, '');
}
var model = app.models[modelName];
if (model) {
generateModelDefinition(model, out);
}
}
}
var def = modelClass.definition;
var name = def.name;
var out = definitions || {};
@ -27,7 +39,7 @@ var modelHelper = module.exports = {
}
var required = [];
// Don't modify original properties.
var properties = _cloneDeep(def.properties);
var properties = _cloneDeep(def.rawProperties);
// Iterate through each property in the model definition.
// Types may be defined as constructors (e.g. String, Date, etc.),
@ -72,6 +84,23 @@ var modelHelper = module.exports = {
generateModelDefinition(rel.modelThrough, out);
}
}
var remotes = modelClass.sharedClass.methods();
for (var remoteIdx in remotes) {
var remote = remotes[remoteIdx];
var returns = remote.returns;
if (returns) {
for (var returnIdx in returns) {
processType(modelClass.app, returns[returnIdx].type, out);
}
}
var errors = remote.errors;
if (errors) {
for (var errorIdx in errors) {
processType(modelClass.app, errors[errorIdx].responseModel, out);
}
}
}
return out;
},