Home Reference Source

lib/preProcessModels.js

/**
 * Process models to ensure that all the viewId properties are valid.
 * @ignore
 *
 * @param {JoinJsMap} models
 * @param {Object} views
 */
module.exports = function preProcessModels(models, views) {
  return models.map(model => {
    const output = {
      mapId: model.mapId,
      viewId: views[model.mapId] || model.mapId,
      idProperty: model.idProperty,
      properties: model.properties
    };

    output.associations = (model.associations || []).map(assoc => ({
      name: assoc.name,
      mapId: assoc.mapId,
      idProperty: model.idProperty,
      viewId: views[assoc.mapId] || assoc.mapId,
      columnPrefix: `${assoc.mapId}_`
    }));

    output.collections = (model.collections || []).map(coll => ({
      name: coll.name,
      mapId: coll.mapId,
      idProperty: model.idProperty,
      viewId: views[coll.mapId] || coll.mapId,
      columnPrefix: `${coll.mapId}_`
    }));
    return output;
  });
};