Closed1

[Go] 複数モジュールから参照するテーブルのモデルを自動生成

こまつやまこまつやま
  • Hasura + Remote Schemas (Go + 99designs/gqlgen)
  • Hasura の構成ファイルと Remote Schemas は同じリポジトリで管理
  • Remote Schemas では Gorm を使用
  • テーブルのモデルの生成には smallnest/gen を使用
    • データベースからカラム構造の詳細を読み取ることで、gen は必要なカラム名、データ型、アノテーションを持つ構造体を生成する
    • CI 環境でマイグレーションを適用した DB サーバに対して gen を実行し、現状のコードと差分がないことを確認するようにすると、使っているモデルが DB のスキーマに追従していることを担保できる
  • DB との接続が必要なバッチ処理を、GraphQL サーバと同じリポジトリで管理するように
  • バッチ処理のソースコードを同じリポジトリで管理すれば
    • CI 環境でテストしやすい
    • Remote Schemas・バッチ処理 共通で使う コードの管理を一元化できる
.
├── docker-compose.yml
├── batch-job
│   ├── go.mod
│   ├── go.sum
│   └── main.go
├── external  # Hasura の Remote Schemas になっている GraphQL サーバ
│   ├── go.mod
│   ├── go.sum
│   └── main.go
├── hasura
│   ├── metadata
│   ├── migrations
│   └── seeds
└── shared
    ├── gen
    ├── go.mod
    ├── go.sum
    └── test
このスクラップは2022/07/18にクローズされました