pub trait EpisodeRepository: Send + Sync {
// Required methods
fn save(&self, episode: &Episode) -> Result<EpisodeId, StoreError>;
fn find_by_id(&self, id: &EpisodeId) -> Result<Option<Episode>, StoreError>;
fn find_all(
&self,
filter: &EpisodeFilter,
) -> Result<Vec<Episode>, StoreError>;
fn count(&self, filter: Option<&EpisodeFilter>) -> Result<usize, StoreError>;
fn list_meta(
&self,
filter: Option<&EpisodeFilter>,
) -> Result<Vec<EpisodeMeta>, StoreError>;
}Expand description
Domain 層に公開する Episode の Repository インターフェース
Domain は永続化の詳細(RecordStore, EpisodeStore)を知らず、 このインターフェースのみを使用する。
Required Methods§
Sourcefn find_by_id(&self, id: &EpisodeId) -> Result<Option<Episode>, StoreError>
fn find_by_id(&self, id: &EpisodeId) -> Result<Option<Episode>, StoreError>
ID で Episode を取得(Record を含む完全な Entity)
Sourcefn find_all(&self, filter: &EpisodeFilter) -> Result<Vec<Episode>, StoreError>
fn find_all(&self, filter: &EpisodeFilter) -> Result<Vec<Episode>, StoreError>
フィルタで検索(Record を含む完全な Entity)
Sourcefn count(&self, filter: Option<&EpisodeFilter>) -> Result<usize, StoreError>
fn count(&self, filter: Option<&EpisodeFilter>) -> Result<usize, StoreError>
件数を取得
Sourcefn list_meta(
&self,
filter: Option<&EpisodeFilter>,
) -> Result<Vec<EpisodeMeta>, StoreError>
fn list_meta( &self, filter: Option<&EpisodeFilter>, ) -> Result<Vec<EpisodeMeta>, StoreError>
メタ情報のみをリスト(軽量)