DDLからコード生成するツールを作ったよ!
MySQLのDDLをパースして外部キー制約を考慮したDELETEとINSERTのコード片を生成するツールを作りました。
Github Pagesからも使えます↓
https://kkmtyyz.github.io/ddl-tool/
経緯
外部キー制約が定義されたデータベースを使う機会があり、テストコードを書く際に毎回レコードの削除と挿入を行うコードを書く必要がありました。
あるテストで使用するテーブルは3つだけでも、外部キー制約から20個のテーブルに関して削除と挿入のコードを書く必要があり、当然それら操作の順序を考慮する必要があります。使用するテーブルの組み合わせはAPI毎に異なるので都度テーブル定義から依存関係を確認する必要があり、手間とミスが生じるのでツールを作りました。
動作
例えば、MySQLのサンプルデータベースsakilaのDDLを開いて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を付けられるので便利ですね。
こういうツールは必要になったその時限りの出番になることが多いので、今後もこのツールを拡張して使えるような機会があるといいなと思います。