'use strict'; // @ts-ignore import Converter from './utils/Converter'; const jsonMerger = require("json-merger"); //https://github.com/boschni/json-merger const Graph = require("./utils/graph-data-structure"); const _ = require('underscore'); export default class MySqlDBSchemaGraph { //Get the array of same table names (edges) from two nodes getEdges = (node1, node2) => { let edgeNames = node1.filter(function (val) { return node2.indexOf(val) != -1; }); return edgeNames; } //Get unique edges names //Purpose: so one edge as the key can have nested target and source getUniqueEdgeNames = (edgesAndNodesCombined: Array) => { let edgeNames = []; for(let i=0; i { let edgesAndNodes = []; let edgesAndNodesCombined = []; let referencedTables = []; let edgeName:string; //foreign key column name let sourceNode:string; //foreign key table name let targetNode:string; //primary key table name let tableNames = Object.keys(tableWithColObject); //tableName is the key of the referential objects for(let tableName of tableNames){ referencedTables = tableWithColObject[tableName]; for(let referencedTable of referencedTables){ edgeName = referencedTable['columnName']; //foreign key sourceNode = referencedTable['tableName']; //table that has the foreign key targetNode = referencedTable['referencedTableName']; //table that has the primary key //adds edges and nodes to an array edgesAndNodes.push(edgeName); //add edge name edgesAndNodes.push(sourceNode); edgesAndNodes.push(targetNode); edgesAndNodesCombined.push(edgesAndNodes); edgesAndNodes = []; } } return edgesAndNodesCombined; } //Get edges with source node and target node in Json getEdgesGraph = (uniqueEdgeNames:Array, edgesAndNodesCombined: Array) => { let serializedLinks; let edgesJson = {edges: {}}; let sourceNode; let targetNode; let edgeName:string = ''; let graph = new Graph(); for (let i=0; i