From d5e27ce4cd1b61921252f3df7cde116009872af4 Mon Sep 17 00:00:00 2001 From: ras0q Date: Sat, 20 Jul 2024 16:16:42 +0900 Subject: [PATCH] :memo: update package structure --- docs/architecture.md | 56 ++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index bc352bb8..d81aca54 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -6,44 +6,28 @@ ```bash . -├── bin # makeでコンパイルしたバイナリが入る -├── dev # 開発用の設定ファイル、スクリプト -│ └── bin # makeで使うシェルスクリプト -├── docs # ドキュメント -│ ├── dbschema # DBスキーマ(tblsで自動生成) -│ └── swagger # APIスキーマ -├── domain # domain層。他層に依存しないドメインオブジェクトを格納する -├── infrastructure # infrastructure層。他3層に依存する。 -│ └── migration # DBのマイグレーション(go-gormigrate/gormigrateを使用) -├── integration_tests # 結合テスト -│ ├── handler -│ ├── repository -│ ├── testdata -│ └── testutils -├── interfaces # interface層。usecase層、domain層に依存する -│ ├── database # DB操作に関するインターフェイスを定義 -│ │ └── mock_database # 単体テスト用モック(手書き) -│ ├── external # 外部サービス(traQ等)に関するインターフェイスを定義 -│ │ ├── mock_external # 単体テスト用モック(mockgenで自動生成) -│ │ └── mock_external_e2e # E2Eテスト用モック(手書き) -│ ├── handler # echoハンドラーの実装、組み立て -│ └── repository # usecases/repositoryの実装 -│ └── model # DBのモデル -├── usecases # usecase層。domain層に依存する -│ ├── repository # リポジトリ操作に関するインターフェイスを定義 -│ │ └── mock_repository # 単体テスト用モック(mockgenで自動生成) -│ └── service # ビジネスロジックに関するインターフェイスの定義、実装 -│ └── mock_service # 単体テスト用モック(mockgenで自動生成) -├── util # 汎用パッケージ -│ ├── config # config.yamlから設定を読み込む -│ │ └── testdata -│ ├── mockdata # E2Eテスト、結合テストで用いるサンプルデータを格納 -│ ├── optional # null値を扱うためのパッケージ -│ └── random # テストで用いる乱数生成パッケージ -└── main.go +├── main.go # エントリーポイント +├── injector.go # 依存性注入 +└── internal + ├── domain # 他層に依存しないドメインオブジェクトを格納する + ├── usecases # アプリケーションの具体的な操作を表現する (domain層に依存) + │ └── repository # リポジトリ操作に関するインターフェイスの定義 + ├── handler # Echoによるハンドラー&ルーティング (domain層、usecases層に依存) + │ └── schema # OpenAPIを基に自動生成されたAPIスキーマ + ├── infrastructure # 外部APIやDBへのアクセス (domain層、usecases層に依存) + │ ├── external # 外部APIへのアクセス + │ ├── migration # DBのマイグレーション + │ └── repository # DBへのアクセス (usecases/repository の実装) + │ └── model # GORMのDBスキーマ + └── pkgs # 汎用パッケージ + ├── config # 設定ファイル、環境変数を読み込み管理する + ├── mockdata # E2Eテスト、結合テストで用いるサンプルデータを格納 (消したい) + ├── optional # optionalな値を扱うためのパッケージ + ├── random # テストで用いる乱数生成パッケージ + └── testutils # テストで用いるユーティリティ ``` -## 依存関係 +## 依存関係 (WIP) ユーザー周りに限って紹介