Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ブログアプリで、Userが投稿したPostの合計文字数によって1ヶ月の課金額が決まるとします。この時、「1ヶ月の合計文字数を算出して金額を更新する」というメソッドをPaymentエンティティに書くと思うのですが、以下の解決策どれもしっくりき... #386

Open
little-hands opened this issue Mar 3, 2021 · 0 comments

Comments

@little-hands
Copy link
Owner

Question

ブログアプリで、Userが投稿したPostの合計文字数によって1ヶ月の課金額が決まるとします。

この時、「1ヶ月の合計文字数を算出して金額を更新する」というメソッドをPaymentエンティティに書くと思うのですが、以下の解決策どれもしっくりきません。

・Paymentエンティティを生成する度にその月のPostのcollectionを属性として保持
=>大量になったらパフォーマンスが悪くなると思う
・Paymentエンティティのメソッド内部で1ヶ月のPostのcollectionを取得するため、Postリポジトリにアクセスする
=> エンティティ内からリポジトリにアクセスはNG
・「1ヶ月の合計文字数を算出して金額を更新する」ユースケースの中で1ヶ月のPostのcollectionを取得 + 合計金額を出して、Paymentエンティティのメソッドに引き渡す
=>ドメイン知識がユースケース層に漏れ出てしまっている

という感じでどうしたらいいかわかりません。
こんな時はどのような解決策があるのでしょうか?

Answer

計算対象のPostのコレクションを取得し、そのままPaymentのコンストラクタに渡すのはいかがでしょう。そして、Paymentの中でPostの合計文字数を計算したり金額計算する処理を行えば、ドメイン層のオブジェクトに計算の知識を持たせられると思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant