# APIアプリケーション
app/
├── domain/
│ └── domain.go
├── application/
│ └── usecase/
│ ├── auth.go
│ └── deck.go
├── infra/
│ └── db/
│ ├── client.go
│ └── get_user.go
├── router/
│ ├── graph/
│ │ └── resolver/
│ └── schema/
└── util/
└── logger/
└── logger.go
# マイグレーション・シード管理
atlas/
├── schema.sql
└── seeds/
└── development/
└── 20240628144146_users.sql
なんちゃってクリーンアーキテクチャを意識
層が厚くなり開発スピードが落ちないようにインターフェイス、レポジトリ層を省略。 ただし、DI や関心の分離は意識して作成している。
他の層と依存する場合は、interface を参照すること。
router ← usecase ← infra
.env
で管理
クレデンシャル情報が必要になります。
管理者に問い合わせてください。
make up
.env.test
で管理
settings.json に以下を追加する
"go.testEnvVars": {
"TZ": "UTC"
},
"go.testEnvFile": "${workspaceFolder}/.env.test"
VSCode で linter を有効にする設定
settings.json に以下を追加する
"go.lintTool": "golangci-lint",
"go.lintFlags": ["--fast"]
API
docker build -f docker/Dockerfile.production -t phraze-app-prd .
Migration
docker build -f docker/Dockerfile.migration -t phraze-migration-prd .