@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
125 lines • 4.95 kB
JavaScript
;
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