mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-24 09:49:46 +02:00
Initial parsing logic for ER diagrams
This commit is contained in:
77
src/diagrams/er/erDb.js
Normal file
77
src/diagrams/er/erDb.js
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
import { logger } from '../../logger';
|
||||
|
||||
let entities = {};
|
||||
let relationships = [];
|
||||
let title = '';
|
||||
|
||||
const Cardinality = {
|
||||
ONLY_ONE_TO_ONE_OR_MORE : 'ONLY_ONE_TO_ONE_OR_MORE',
|
||||
ONLY_ONE_TO_ZERO_OR_MORE : 'ONLY_ONE_TO_ZERO_OR_MORE',
|
||||
ZERO_OR_ONE_TO_ZERO_OR_MORE : 'ZERO_OR_ONE_TO_ZERO_OR_MORE',
|
||||
ZERO_OR_ONE_TO_ONE_OR_MORE : 'ZERO_OR_ONE_TO_ONE_OR_MORE',
|
||||
ONE_OR_MORE_TO_ONLY_ONE : 'ONE_OR_MORE_TO_ONLY_ONE',
|
||||
ZERO_OR_MORE_TO_ONLY_ONE : 'ZERO_OR_MORE_TO_ONLY_ONE',
|
||||
ZERO_OR_MORE_TO_ZERO_OR_ONE : 'ZERO_OR_MORE_TO_ZERO_OR_ONE',
|
||||
ONE_OR_MORE_TO_ZERO_OR_ONE : 'ONE_OR_MORE_TO_ZERO_OR_ONE',
|
||||
ZERO_OR_ONE_TO_ONLY_ONE : 'ZERO_OR_ONE_TO_ONLY_ONE',
|
||||
ONLY_ONE_TO_ONLY_ONE : 'ONLY_ONE_TO_ONLY_ONE',
|
||||
ONLY_ONE_TO_ZERO_OR_ONE : 'ONLY_ONE_TO_ZERO_OR_ONE',
|
||||
ZERO_OR_ONE_TO_ZERO_OR_ONE : 'ZERO_OR_ONE_TO_ZERO_OR_ONE',
|
||||
ZERO_OR_MORE_TO_ZERO_OR_MORE: 'ZERO_OR_MORE_TO_ZERO_OR_MORE',
|
||||
ZERO_OR_MORE_TO_ONE_OR_MORE : 'ZERO_OR_MORE_TO_ONE_OR_MORE',
|
||||
ONE_OR_MORE_TO_ZERO_OR_MORE : 'ONE_OR_MORE_TO_ZERO_OR_MORE',
|
||||
ONE_OR_MORE_TO_ONE_OR_MORE : 'ONE_OR_MORE_TO_ONE_OR_MORE'
|
||||
};
|
||||
|
||||
const addEntity = function(name) {
|
||||
if (typeof entities[name] === 'undefined') {
|
||||
entities[name] = name;
|
||||
logger.debug('Added new entity :', name);
|
||||
}
|
||||
};
|
||||
|
||||
const getEntities = () => entities;
|
||||
|
||||
const addRelationship = function(entA, rolA, entB, rolB, card) {
|
||||
let rel = {
|
||||
entityA : entA,
|
||||
roleA : rolA,
|
||||
entityB : entB,
|
||||
roleB : rolB,
|
||||
cardinality : card
|
||||
};
|
||||
|
||||
relationships.push(rel);
|
||||
logger.debug('Added new relationship :', rel);
|
||||
}
|
||||
|
||||
const getRelationships = () => relationships;
|
||||
|
||||
// Keep this - TODO: revisit...allow the diagram to have a title
|
||||
const setTitle = function(txt) {
|
||||
title = txt;
|
||||
};
|
||||
|
||||
const getTitle = function() {
|
||||
return title;
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
entities = {};
|
||||
relationships = [];
|
||||
title = '';
|
||||
};
|
||||
|
||||
export default {
|
||||
Cardinality,
|
||||
addEntity,
|
||||
getEntities,
|
||||
addRelationship,
|
||||
getRelationships,
|
||||
clear,
|
||||
setTitle,
|
||||
getTitle
|
||||
};
|
Reference in New Issue
Block a user