薄っぺらりん

厚くしていきたい

DDLからコード生成するツールを作ったよ!

MySQLDDLをパースして外部キー制約を考慮したDELETEとINSERTのコード片を生成するツールを作りました。

github.com

Github Pagesからも使えます↓
https://kkmtyyz.github.io/ddl-tool/

経緯

外部キー制約が定義されたデータベースを使う機会があり、テストコードを書く際に毎回レコードの削除と挿入を行うコードを書く必要がありました。
あるテストで使用するテーブルは3つだけでも、外部キー制約から20個のテーブルに関して削除と挿入のコードを書く必要があり、当然それら操作の順序を考慮する必要があります。使用するテーブルの組み合わせはAPI毎に異なるので都度テーブル定義から依存関係を確認する必要があり、手間とミスが生じるのでツールを作りました。

動作

例えば、MySQLのサンプルデータベースsakilaDDLを開いてaddressテーブルとfilmテーブルを選択すると、次のようなコード片が作れます。

出力はgenDeleteTableCode関数とgenInsertJavaCode関数を編集することで変更できます。

// delete tables
Address
Film
City
Language
Country

// insert entities
CountryEntity insertCountryEntity = new CountryEntity();
// insertCountryEntity

LanguageEntity insertLanguageEntity = new LanguageEntity();
// insertLanguageEntity

CityEntity insertCityEntity = new CityEntity();
insertCityEntity.setCountryId(insertCountryEntity.getCountryId());
// insertCityEntity

FilmEntity insertFilmEntity = new FilmEntity();
insertFilmEntity.setLanguageId(insertLanguageEntity.getLanguageId());
insertFilmEntity.setOriginalLanguageId(insertLanguageEntity.getLanguageId());
// insertFilmEntity

AddressEntity insertAddressEntity = new AddressEntity();
insertAddressEntity.setCityId(insertCityEntity.getCityId());
// insertAddressEntity

まとめ

チームの人々が喜んでくれたので良かったです。
普段JavaScriptはあまり触りませんが、ちょっとしたツールが欲しいときに簡単にGUIを付けられるので便利ですね。
こういうツールは必要になったその時限りの出番になることが多いので、今後もこのツールを拡張して使えるような機会があるといいなと思います。