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