- https://twitter.com/a_suenami/status/1057209112579035136
- https://twitter.com/a_suenami/status/1057490508648456193
- Rails の場合は Repository は冗長かなと思って Query クラスから直接 AR を使っている。
- 同様の理由で
MemberAggregate::Member
をアレコレしてからstore
とかするのだるいので Command クラスにして、そこから直接 AR で副作用起こす感じ。 - 僕が CQRS 好きだからというのもある。
- Query クラスに Member とか MemberDetail を注入したい。
- Query クラスのメソッドは Repository のメソッドに、Command クラスのメソッドはドメインイベント(の前段となるコマンド)に対応するイメージ。
- 集約をまたぐ場合は
app/controllers/concerns
とかにアプリケーションサービスを作る。
app
└── aggregates
└── member_aggregate
├── command.rb
├── member.rb
└── query.rb