Skip to content

a5doc/reverse-db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reverse-db

a5doc の table定義を既存のDBからリバースエンジニアリングで作成するためのツールです。

インストール

npm install a5doc/reverse-db --save

コマンドラインからの実行

コマンドラインからの実行方法です。

npx reverse-db -h 192.168.1.1 -d dbname -u user_name -p password -f yaml

オプション

  • -d
    DB名
  • -u
    ユーザー名
  • -p
    パスワード
  • -h
    ホスト名
  • -P
    ポート番号
  • -D
    DB(現バージョンではmysqlのみ指定可能)
  • -t
    テーブル名(カンマ区切りで複数指定可能)
  • -o
    出力先ディレクトリ
  • -f
    出力書式。(yaml | json | front-matter)
  • オプションの詳細は、実装例のところでも説明します。

    実装例と説明

    実装例です。

    const reverseDb = require('reverse-db')
    
    const config = {
      database: 'testdb',          // (1)
      username: 'user1',           // (2)
      password: 'pass1',           // (3)
      host: '192.168.33.10',       // (4)
      dialect: 'mysql',            // (5)
      tables: [                    // (6)
        'user',
        'group',
        'order',
      ],
      output: './設計/テーブル定義',  // (7)
      format: 'front-matter',         // (8)
    };
    
    reverseDb.reverse(config);     // (9)
    • (1) データベース名
    • (2) 接続ユーザー
    • (3) 接続パスワード
    • (4) ホスト名
    • (5) DB (sequelizeがサポートするDBではあるのだけど、現バージョンはmysqlのみに対応)
    • (6) リバースエンジニアするテーブル名
    • (7) テーブル定義の元となる yaml ファイルを出力するディレクトリ
    • (8) 出力形式(※1
    • (9) 実行します

    ※1 出力形式

    出力形式は、以下の形式で出力できます。

    • yaml
      yml で出力する。
    • json
      json で出力する。
    • front-matter
      md ファイルの front-matter として出力する。
      このデータの利用方法として、a5docでマークダウンのテーブル定義を出力することにあったりするので、中間ファイル的なものを作るよりも、mdの中にfront-matter で出力した方が、まとまりがよかったりするので、好みの問題ではあるけれど、1つのファイルで管理する場合に指定する。

    出力済ファイルの自動追従

    一度、出力されたファイルは、再度出力するときに、先に、ディレクトリ内(サブディレクトリ含む)を検索して、ファイル名が変わっていたり、ディレクトリが変わっていても、teble の id で識別して、同じファイルに上書きします。
    一回、全テーブルをリバースエンジニアリングで出力したあと、マスタ系とトランザクション系で、ディレクトリを分けて、整理しなおしたけど、カラム追加をしたから再出力したい・・・のようなときに便利です。

    このツールの用途

    既存システムで、テーブル定義とかの設計書を作成してこなかったシステムがあって、 規模が大きくなってきたので、そろそろテーブルの設計書がないと、わからなくなってきているような、そんなケースを想定しています。

    実行すると、 output で指定したディレクトリ内にテーブル毎にファイルが作成されます。 これを、さらに、 a5doc のコマンドでマークダウンにします。

    a5doc table
    

    使い方としては、ザックリとテーブル定義を作成して、概要とか補足説明などは、出力されたドキュメントを修正する感じの使い方になります。
    とっかかりのひな形を起こすことを目的としていて、DBとドキュメントを無加工で自動同期しようとか、そういう用途ではありません。CRUDのソースコードのscaffoldを想像してもらうとよいかと思います。

    ER図を出力するには、作成手順 を確認して、a5doc.yml と 出力したドキュメントの FK などを加筆して、作成してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages