ドメイン設計で開発を行っています。
リポジトリについての理解が難しく混乱しているので質問させてください。
例えばなのですが、オーナーとユーザーという概念が存在しているとします。
オーナー1人につきユーザーが複数存在してオーナーはユーザーの管理者です。
オーナーだけがタグを作成できる機能があり、ユーザーはオーナーが作成したタグを選択(複数可)することができます。
この場合、テーブルとしては「タグテーブル」と「ユーザー選択タグテーブル」が必要だと思います。
テーブルの構成としてはこのようなものと仮定します。
タグテーブル
tag_id | owner_id | tag_name
ユーザー選択タグテーブル
tag_id | user_id
この場合、タグを保存する際はTagRepositoryを用意して保存すればいいと考えています。
しかし、ユーザーがタグを選択して保存する際にリポジトリをどのように定義すればいいのかがわかりません。
タグ選択はタグIDのみが配列で渡されるという動作を考えていて、このタグIDのみを保持するドメインオブジェクトを作成する必要があるのでしょうか?
また、ユーザーが選択画面でタグ情報を取得する際はタグID+タグ名が必要になりこちらも別途ドメインオブジェクトが必要でしょうか?(保存時のドメインオブジェクトと共通でいい?)
・オーナーがタグを保存する際は、タグ用のドメインオブジェクトを用意して、TagRepositoryで永続化する
・オーナーがタグを取得する際は、TagRepositoryからデータを取得して、タグ用のドメインオブジェクトに変換する
・ユーザーが選択タグを保存する際は、選択タグ用のドメインオブジェクト(param: tag_id, name = null)を作成して、選択タグ用のドメインオブジェクトの配列の中からtag_idを抜き出してSelectTagRepositoryで永続化
・ユーザーが選択タグを取得する際は、SelectTagRepositoryからデータを取得して、選択タグ用のドメインオブジェクトに変換する。
まとめると自分の認識ではこのように考えています。
しかし、選択したタグIDを保存するのにリポジトリは必要なのかという疑問と、保存時はnameが常にnullになることに疑問を感じています。
リポジトリについて理解が浅く頓珍漢なことを言っていると思いますが、よろしければ回答よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/13 01:04
2024/08/13 02:48