Skip to content
This repository was archived by the owner on Feb 6, 2020. It is now read-only.

dineug/vuerd-electron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warning

This project is no longer managed

completely restructured
Please use the vscode extension ERD Editor

Migration Data

const oldData = require("./[oldData].json");
const fs = require("fs");

function createBaseData() {
  return {
    canvas: {
      width: 2000,
      height: 2000,
      scrollTop: 0,
      scrollLeft: 0,
      show: {
        tableComment: true,
        columnComment: true,
        columnDataType: true,
        columnDefault: true,
        columnAutoIncrement: true,
        columnPrimaryKey: true,
        columnUnique: true,
        columnNotNull: true,
        relationship: true
      },
      database: "MySQL",
      databaseName: "",
      canvasType: "ERD",
      language: "graphql",
      tableCase: "pascalCase",
      columnCase: "camelCase"
    },
    memo: {
      memos: []
    },
    table: {
      tables: [],
      edit: null,
      copyColumns: [],
      columnDraggable: null
    },
    relationship: {
      relationships: [],
      draw: null
    }
  };
}

oldData.tabs.forEach(tab => {
  const baseData = createBaseData();
  baseData.canvas.databaseName = tab.name;
  baseData.canvas.width = tab.store.CANVAS_WIDTH;
  baseData.canvas.height = tab.store.CANVAS_WIDTH;
  tab.store.tables.forEach(table => {
    const resultTable = {
      id: table.id,
      name: table.name,
      comment: table.comment,
      ui: {
        active: table.ui.selected,
        top: table.ui.top,
        left: table.ui.left,
        widthName: table.ui.width / 2,
        widthComment: table.ui.width / 2,
        zIndex: table.ui.zIndex
      },
      columns: []
    };
    table.columns.forEach(column => {
      resultTable.columns.push({
        id: column.id,
        name: column.name,
        comment: column.comment,
        dataType: column.dataType,
        default: column.default,
        option: {
          autoIncrement: column.options.autoIncrement,
          primaryKey: column.options.primaryKey,
          unique: column.options.unique,
          notNull: column.options.notNull
        },
        ui: {
          active: column.ui.selected,
          pk: column.ui.pk,
          fk: column.ui.fk,
          pfk: column.ui.pfk,
          widthName: column.ui.widthName,
          widthComment: column.ui.widthComment,
          widthDataType: column.ui.widthDataType,
          widthDefault: 60
        }
      });
    });
    baseData.table.tables.push(resultTable);
  });
  tab.store.lines.forEach(line => {
    baseData.relationship.relationships.push({
      identification: line.isIdentification,
      id: line.id,
      relationshipType: line.type === "erd-0-1-N" ? "ZeroOneN" : "ZeroOne",
      start: {
        tableId: line.points[0].id,
        columnIds: line.points[0].columnIds,
        x: line.points[0].x,
        y: line.points[0].y,
        direction: "top"
      },
      end: {
        tableId: line.points[1].id,
        columnIds: line.points[1].columnIds,
        x: line.points[1].x,
        y: line.points[1].y,
        direction: "top"
      }
    });
  });
  tab.store.memos.forEach(memo => {
    baseData.memo.memos.push({
      value: memo.content,
      id: memo.id,
      ui: {
        active: memo.ui.selected,
        top: memo.ui.top,
        left: memo.ui.left,
        width: memo.ui.width,
        height: memo.ui.height,
        zIndex: memo.ui.zIndex
      }
    });
  });

  fs.writeFile(
    `./convert-${new Date().getTime()}.vuerd.json`,
    JSON.stringify(
      baseData,
      (key, value) => {
        return value;
      },
      2
    ),
    err => {
      if (err) {
        console.log(err);
      }
    }
  );
});

console.log("END");

vuerd

logo

use
use

vuerd-electron

ERD

start

$ yarn
$ yarn dev

License

MIT