Closed2
Golang + Gin + GORMの設計ひとり反省会
とりあえず今思っていることを書き殴る。
設計
- このへんを参考にレイヤードアーキテクチャーで実装
Pros
- ロジックとDBアクセスの切り分けで見通しが良い
Cons
- トランザクションをどう管理するかがまだ結論出てない
- interface切った利点がまだ活きてない(ちゃんとテスト書いてない)
マスターデータ管理
-
xx_categories
というテーブルを用意した
Cons
- 結局特定のレコードで特殊な処理をするときに、enumとdbで二重管理になってしまう
gin
Cons
- エラーメッセージの設計がまだちゃんとできてない
GORM
Cons
- JoinとPreloadまわりの挙動が貧弱
- infraで何をPreloadしたのかをUsecase側で意識しないといけない
- 型安全になってない
マイグレーション
Cons
- migrateとオリジナルmigrationを変に混ぜてしまった
→ migrateに統合するべきだった
[設計] トランザクションをどう管理するかがまだ結論出てない
こちらに関しては、トランザクションが必要な処理については1メソッドで完結させ、usecaseとrepositoryを一意対応させるようにする。
それぞれのクラスでinterfaceを切るのは、工数もかからないし、組織がデカくなったとき用に継続する
このスクラップは2021/05/18にクローズされました