Skip to content

karamaru-alpha/chat-go-server

Repository files navigation

About

gRPC を用いてリアルタイムチャットアプリを作ってみる(server 側)

Setup

  • サーバーを 8080 ポートで起動する
$ make run
  • MySQL のデータを初期化する
$ make reset_migration

Preview

output-palette

構成

Domain層

  • ドメインモデルの定義・ライフサイクルの表現

domain/model/

  • エンティティ
  • 値オブジェクト
  • ファクトリ
  • リポジトリ

domain/service/

  • ドメインサービス

※トークルームとメッセージは別集約として扱う(リポジトリで集約単位で扱うにはメッセージの数が多すぎるため)

Infrastructure層

  • Domain層で定義したRepositoryを実現する

infrastructure/repository/

  • Domain層で定義したRepositoryの実装クラス

infrastructure/mysql/

  • mysqlとのコネクション確保
  • DBデータ⇆Entityの変換を行う独自のFactory(DTO)

infrastructure/redis/

  • redisのコネクション確保

Application層

  • Domain情報を駆使して、ユースケースを進行させる

application/${USECASE_NAME}/

  • 入力値(InputData)
  • 出力値(OutputData)
  • ユースケースを実現するinteractor
  • interactorのインターフェースであるinput_port

Interfaces層

interafces/controller/

  • リクエストを整形しアプリケーションサービスに伝搬、出力のレスポンスも担う(controller/presenter)

その他

proto/

  • protoファイル定義・自動生成コード

util/

  • どの層にも属さない共通処理

di/

  • wireを用いて依存性注入を行う

mock/

  • gomockでモックした関数

test/

  • モックを利用したユニットテスト

docker/

  • docker情報

About

gRPCを用いてリアルタイムチャットアプリを作ってみる(server側)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages