feat(domain): add ShowSummary, SeasonSummary types + ILibraryRepository methods
This commit is contained in:
@@ -67,6 +67,7 @@ pub struct LibrarySearchFilter {
|
|||||||
pub min_duration_secs: Option<u32>,
|
pub min_duration_secs: Option<u32>,
|
||||||
pub max_duration_secs: Option<u32>,
|
pub max_duration_secs: Option<u32>,
|
||||||
pub search_term: Option<String>,
|
pub search_term: Option<String>,
|
||||||
|
pub season_number: Option<u32>,
|
||||||
pub offset: u32,
|
pub offset: u32,
|
||||||
pub limit: u32,
|
pub limit: u32,
|
||||||
}
|
}
|
||||||
@@ -83,12 +84,31 @@ impl Default for LibrarySearchFilter {
|
|||||||
min_duration_secs: None,
|
min_duration_secs: None,
|
||||||
max_duration_secs: None,
|
max_duration_secs: None,
|
||||||
search_term: None,
|
search_term: None,
|
||||||
|
season_number: None,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
limit: 50,
|
limit: 50,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Aggregated summary of a TV show derived from synced episodes.
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct ShowSummary {
|
||||||
|
pub series_name: String,
|
||||||
|
pub episode_count: u32,
|
||||||
|
pub season_count: u32,
|
||||||
|
pub thumbnail_url: Option<String>,
|
||||||
|
pub genres: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Aggregated summary of one season of a TV show.
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct SeasonSummary {
|
||||||
|
pub season_number: u32,
|
||||||
|
pub episode_count: u32,
|
||||||
|
pub thumbnail_url: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
/// Port: sync one provider's items into the library repo.
|
/// Port: sync one provider's items into the library repo.
|
||||||
/// DB writes are handled entirely inside implementations — no pool in the trait.
|
/// DB writes are handled entirely inside implementations — no pool in the trait.
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
@@ -114,6 +134,17 @@ pub trait ILibraryRepository: Send + Sync {
|
|||||||
async fn log_sync_finish(&self, log_id: i64, result: &LibrarySyncResult) -> DomainResult<()>;
|
async fn log_sync_finish(&self, log_id: i64, result: &LibrarySyncResult) -> DomainResult<()>;
|
||||||
async fn latest_sync_status(&self) -> DomainResult<Vec<LibrarySyncLogEntry>>;
|
async fn latest_sync_status(&self) -> DomainResult<Vec<LibrarySyncLogEntry>>;
|
||||||
async fn is_sync_running(&self, provider_id: &str) -> DomainResult<bool>;
|
async fn is_sync_running(&self, provider_id: &str) -> DomainResult<bool>;
|
||||||
|
async fn list_shows(
|
||||||
|
&self,
|
||||||
|
provider_id: Option<&str>,
|
||||||
|
search_term: Option<&str>,
|
||||||
|
genres: &[String],
|
||||||
|
) -> DomainResult<Vec<ShowSummary>>;
|
||||||
|
async fn list_seasons(
|
||||||
|
&self,
|
||||||
|
series_name: &str,
|
||||||
|
provider_id: Option<&str>,
|
||||||
|
) -> DomainResult<Vec<SeasonSummary>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Reference in New Issue
Block a user