generator-begcode
Version:
Spring Boot + Angular/React/Vue in one handy generator
62 lines (61 loc) • 2.38 kB
JavaScript
import EntityIssue from './issues/entity-issue.js';
import { shouldWriteEntityTableName } from '../jhipster/index.js';
import { rulesNames } from './rules.js';
let issues;
export function checkEntities(entityDeclarations) {
if (!entityDeclarations) {
return [];
}
issues = [];
checkForDuplicatedEntities(entityDeclarations);
entityDeclarations.forEach(entityDeclaration => {
checkForUselessEntityBraces(entityDeclaration);
checkForUselessTableName(entityDeclaration);
});
return issues;
}
function checkForDuplicatedEntities(entityDeclarations) {
const entityNames = new Set();
const duplicatedEntityIssues = new Map();
entityDeclarations.forEach(entityDeclaration => {
const entityName = entityDeclaration.children.NAME[0].image;
if (entityNames.has(entityName)) {
if (!duplicatedEntityIssues.has(entityName)) {
duplicatedEntityIssues.set(entityName, new EntityIssue({
ruleName: rulesNames.ENT_DUPLICATED,
entityName,
}));
}
}
else {
entityNames.add(entityName);
}
});
duplicatedEntityIssues.forEach(issue => {
issues.push(issue);
});
}
function checkForUselessEntityBraces(entityDeclaration) {
const entityBody = entityDeclaration.children.entityBody;
const nextTokensAfterRelationshipType = entityBody && entityBody[0].children;
const onlyCurlyBracesAsRelationshipBody = entityBody && Object.keys(nextTokensAfterRelationshipType).length === 2;
if (onlyCurlyBracesAsRelationshipBody) {
issues.push(new EntityIssue({
ruleName: rulesNames.ENT_SHORTER_DECL,
entityName: entityDeclaration.children.NAME[0].image,
}));
}
}
function checkForUselessTableName(entityDeclaration) {
const entityName = entityDeclaration.children.NAME[0].image;
const entityTableNameDeclaration = entityDeclaration.children.entityTableNameDeclaration;
if (entityTableNameDeclaration) {
const tableName = entityTableNameDeclaration[0].children.NAME[0].image;
if (!shouldWriteEntityTableName(entityName, tableName)) {
issues.push(new EntityIssue({
ruleName: rulesNames.ENT_OPTIONAL_TABLE_NAME,
entityName,
}));
}
}
}