@openactive/data-models
Version:
Data models used to drive that OpenActive validator, developer documentation, and model libraries
23 lines (21 loc) • 855 B
JavaScript
const loadModelMergeParent = (paramModel, paramParentModel) => {
let model = { ...paramModel };
const parentModel = paramParentModel;
for (const field in parentModel.fields) {
if (Object.prototype.hasOwnProperty.call(parentModel.fields, field)) {
if (typeof parentModel.fields[field].inheritedFrom === 'undefined') {
parentModel.fields[field].inheritedFrom = model.subClassOf;
}
}
}
model.fields = Object.assign(parentModel.fields, model.fields || {});
model.derivedFrom = model.derivedFrom || null;
model.baseSchemaClass = model.derivedFrom || parentModel.baseSchemaClass;
model = Object.assign(parentModel, model);
if (typeof model.subClassGraph === 'undefined') {
model.subClassGraph = [];
}
model.subClassGraph.unshift(model.subClassOf);
return model;
};
module.exports = loadModelMergeParent;