データベースドキュメント生成コマンド tbls 更新情報 ( MySQLに対応/ER図自動生成/リレーション・コメント追加機能 etc)
tbls更新情報です。
やっとできた
— k1LoW (@k1LoW) 2018年6月5日
やっと、もともと実装したいと思っていた機能をすべて実装できましたので紹介します。
なお、tblsコマンドについては以下のエントリに書いています。
追加機能 ( ~ v0.8.2 )
MySQL対応
まずはPostgreSQLを対応しましたが、MySQLの要望もあったので対応しました(もともと対応予定でしたが要望をいただいたので急ぎました)。
tbls doc mysql://user:pass@hostname:3306/dbname ./dbdoc
というような形でPostgreSQLと同じようにデータベースドキュメントを生成できるようになっています。
ER図作成機能
tbls
コマンドを実行する環境で、Graphvizの dot
コマンドが実行できる場合は、 自動で dot
コマンドを利用して以下のようなER図を生成してドキュメントに配置するようにしました。
ER図があったほうが視覚的にわかりやすいので、以外に便利です。
リレーション・コメント追加機能
tblsは外部キー制約を見てテーブル間のリレーションを判断します。
しかし、スキーマによっては、ORMにリレーション設定を任せていたりその他様々な理由で外部キーを張ることができないことがあると思います。
そのようなスキーマでも、テーブル間のリレーションをER図やドキュメントのテーブル情報に付与したい場合のために、追加でリレーションをtblsコマンドに渡すことができるようにしました。
具体的には --add
オプションにYAMLファイルのパスを渡します。
$ tbls diff mysql://user:pass@hostname:3306/dbname --add path/to/additional_data.yml
追加するYAMLファイルは以下のように指定します。
--- relations: - # logsテーブルにおける FOREIGN KEY(user_id) REFERENCES users(id) と同様 table: logs columns: - user_id parentTable: users parentColumns: - id def: logs->users - # logsテーブルにおける FOREIGN KEY(post_id) REFERENCES posts(id) と同様 table: logs columns: - post_id parentTable: posts parentColumns: - id
また、--add
オプションで渡すYAMLファイルで、テーブルコメントやカラムコメントも上書き追加可能です。
コメント修正のためにSQLを流す必要がなくなりますし、通常のテーブルだけでなくVIEWテーブルのカラムにもコメントが付与できるので便利です。
comments: - table: post_comments tableComment: 各投稿についたコメントの詳細確認用VIEWテーブル columnComments: post_user: 投稿したユーザ名 comment_user: コメントしたユーザ名
テーブル定義(DDL)をドキュメントで確認できるように
PostgreSQLはVIEWテーブル、MySQLはテーブルとVIEWテーブルのテーブル定義をドキュメントから確認できるようにしました。
例えばVIEWテーブル で Table Definition というリンクがあった場合、クリックするとテーブル定義を確認できるようになっています。
というわけで
更新が激しいサービスのデータベースやドキュメントのなかったデータベースにたった1コマンドでデータベースのドキュメントを生成できるtbls、是非使ってみてください!