UNPKG

@cuba-platform/front-generator

Version:
125 lines 4.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.composeParentFqn = exports.isBaseProjectEntity = exports.collectAttributesFromHierarchy = exports.findServiceMethod = exports.findQuery = exports.findViewsForEntity = exports.findView = exports.findEntityByFqn = exports.findEntity = void 0; function findEntity(projectModel, entityInfo) { const entityName = typeof entityInfo === 'string' ? entityInfo : entityInfo.name; let entity; if (Array.isArray(projectModel.entities)) { entity = projectModel.entities.find(e => e.name === entityName); if (entity != null) { return entity; } } else { // old model structure if (projectModel.entities.hasOwnProperty(entityName)) { return projectModel.entities[entityName]; } } if (projectModel.baseProjectEntities != null) { if (Array.isArray(projectModel.baseProjectEntities)) { entity = projectModel.baseProjectEntities.find(e => e.name === entityName); if (entity != null) { return entity; } } else { return projectModel.baseProjectEntities[entityName]; } } } exports.findEntity = findEntity; function findEntityByFqn(projectModel, fqn) { return getAllEntities(projectModel).find(e => e.fqn === fqn); } exports.findEntityByFqn = findEntityByFqn; function getAllEntities(projectModel) { const projectEntities = Array.isArray(projectModel.entities) ? projectModel.entities : Object.values(projectModel.entities); let baseEntities; if (Array.isArray(projectModel.baseProjectEntities)) { baseEntities = projectModel.baseProjectEntities; } else if (projectModel.baseProjectEntities == null) { baseEntities = []; } else { baseEntities = Object.values(projectModel.baseProjectEntities); } return [...projectEntities, ...baseEntities]; } function findView(projectModel, view) { return projectModel.views.find(v => v.name === view.name && v.entity === view.entityName); } exports.findView = findView; function findViewsForEntity(projectModel, entityName) { return projectModel.views .filter(view => view.entity === entityName) .map(view => ({ name: view.name, entityName: view.entity })); } exports.findViewsForEntity = findViewsForEntity; function findQuery(projectModel, queryInfo) { return projectModel.restQueries.find(q => q.entity === queryInfo.entityName && q.name === queryInfo.name); } exports.findQuery = findQuery; function findServiceMethod(projectModel, methodInfo) { const service = projectModel.restServices.find(s => s.name === methodInfo.serviceName); if (service != null) { const method = service.methods.find(m => m.name === methodInfo.methodName); if (method != null) { return { service, method }; } } return null; } exports.findServiceMethod = findServiceMethod; function collectAttributesFromHierarchy(entity, projectModel) { let attrs = entity.attributes; const allEntities = [] .concat(projectModel.entities) .concat(projectModel.baseProjectEntities ? projectModel.baseProjectEntities : []); let { parentClassName, parentPackage } = entity; let parentFqn = composeParentFqn(parentPackage, parentClassName); while (parentFqn.length > 0) { const parent = allEntities.find(e => e.fqn === parentFqn); if (parent) { attrs = parent.attributes ? attrs.concat(parent.attributes) : attrs; parentPackage = parent.parentPackage ? parent.parentPackage : ''; parentClassName = parent.parentClassName ? parent.parentClassName : ''; } else { parentPackage = ''; parentClassName = ''; } parentFqn = composeParentFqn(parentPackage, parentClassName); } return attrs; } exports.collectAttributesFromHierarchy = collectAttributesFromHierarchy; // Quick check; does not ensure entity is among non-base project entities function isBaseProjectEntity(entity, projectModel) { if (!projectModel.baseProjectEntities) return false; const baseProjectEntities = Array.isArray(projectModel.baseProjectEntities) ? projectModel.baseProjectEntities : Object.values(projectModel.baseProjectEntities); if (baseProjectEntities.find(bpe => bpe.name === entity.name)) { return true; } return false; } exports.isBaseProjectEntity = isBaseProjectEntity; function composeParentFqn(parentPackage, parentClassName) { if (!parentClassName || !parentPackage) return ''; if (parentPackage.length == 0 || parentClassName.length == 0) return ''; return `${parentPackage}.${parentClassName}`; } exports.composeParentFqn = composeParentFqn; //# sourceMappingURL=cuba-model-utils.js.map