little-hands/ddd-q-and-a

CQRSを利用して複雑な取得処理、例えば求職者一覧を返すなどをクエリサービスで実装しているのですが、このAPIを利用するユーザーの契約プランに応じて返す求職者をフィルタリングするといったドメインに近そうなロジックが発生する場合そちらはインフ...

Opened this issue · 0 comments

Question

CQRSを利用して複雑な取得処理、
例えば求職者一覧を返すなどをクエリサービスで実装しているのですが、このAPIを利用するユーザーの契約プランに応じて返す求職者をフィルタリングするといったドメインに近そうなロジックが発生する場合そちらはインフラ層に書くのは違うのかなと思うのですが、SQLで絞り込まれた結果に対してusecaseでfilter関数でフィルタリングっていうのも効率が悪い気がしており、、松岡さんだったらこの場合どの部分にフィルタリングのロジックを書きますでしょうか?

Answer

契約プランに応じてフィルター条件を決定するのをドメイン層もしくはユースケース層、指定された条件で情報を取得するのがクエリサービス、という切り分けはどうでしょうか。クエリサービスを使用するからと言って、そのエンドポイントにおける情報取得処理を全てクエリサービスでやる必要はありません。