Clean-Arch、Go、Ginを学習するためのアプリケーションです。
↪️ 参考:
本リポジトリのディレクトリ構造は以下の通りに構成しております。
クリーンアーキテクチャに則ったレイヤー名、パッケージ名、依存関係を取り入れております。
また、インターフェースは各レイヤーパッケージのルートに配置しました。
ただし、APIとして使用するため、インターフェース層のプレゼンター、ユースケース層のアウトプットバウンダリを廃止しております。
これに伴い、ユースケース層のインターラクターは、プレゼンターではなくレスポンスモデルを返却するようにしております。
project
├── build # ビルド処理
└── cmd # エントリポイントを含む処理、ユニットテスト
├── domain # ** ドメイン層 **
| └── foo # 任意のルートエンティティ
| ├── entities # エンティティ
| ├── ids # ID
| ├── repositories # インターフェースリポジトリ
| └── values # 値オブジェクト
|
├── infrastructure # ** インフラストラクチャ層 **
| ├── database # データベース
| ├── logger # ロガー
| ├── middlewares # ミドルウェア
| ├── routers # ルータ
| └── foo # 任意のルートエンティティ
| ├── dtos # gormモデルからドメインモデルへの変換
| ├── repositories # 実装リポジトリ
| └── seeders # DBテストデータ
|
├── interfaces # ** インターフェース層 **
| └── foo # 任意のルートエンティティ
| └── controllers # コントローラ
|
└── usecase # ** ユースケース層 **
└── foo # 任意のルートエンティティ
├── interactors # インターラクター
├── boundaries # インプットバウンダリ
├── requests # リクエストモデル
└── responses # レスポンスモデル
Dockerfileからイメージをビルドし、コンテナを構築します。
イメージのビルドにおいては、マルチステージビルドを採用しております。
$ docker-compose run -d
ホスト側のソースコードを修正に合わせて、コンテナ側のアーティファクトを随時更新します。
また、ホットリロードの実行時に、合わせてソースコード整形と静的解析を実行します。
ツールとして、air を使用いたしました。
$ docker-compose exec app air -c .air.toml