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にクローズされました