DDD(ドメイン駆動設計)における、マスタ情報の扱い
DDDとクリーンアーキテクチャでシステムを設計しているのですが、マスタテーブルに永続化されているValueObjectの扱いについて困っています。
ProductEntity{id,name,price,rank}
があります。rankはpriceの値を元に決められます。
DB的にはランクテーブルがあり、基準価格とその基準でのランクを保持しています。
(例 0円以上はランクA、5000円以上はランクB、10000円以上はランクC)
既に永続化されている状態から、priceを元にrankを探すのはProductRepositoryが行えるので問題ありません。
問題となるのは、Productを生成するFactoryでランク情報が取得できない点です。
新規商品を追加する際に、外部からinputされる情報はnameとpriceのみです。
ユースケースではValueObjectであるRankを直接取得できないためProductEntityが生成できません。
RepositoryやServiceは外部のデータを引数に取ることはできない=ドメインモデルを引数に取るということで、新規Entityを作成し、それを永続化するという部分が実装できません。
このような場合はなにかうまい実装方法があるのでしょうか?
それとも設計がおかしいのでしょうか?