feat(mcp): implement media channel management and scheduling features

This commit is contained in:
2026-03-14 23:19:24 +01:00
parent f7f4d92376
commit c53892159a
12 changed files with 878 additions and 3 deletions

View File

@@ -0,0 +1,43 @@
use domain::{ContentType, IMediaProvider, MediaFilter};
use std::sync::Arc;
use crate::error::{domain_err, ok_json};
pub async fn list_collections(provider: &Arc<dyn IMediaProvider>) -> String {
match provider.list_collections().await {
Ok(cols) => ok_json(&cols),
Err(e) => domain_err(e),
}
}
pub async fn list_genres(
provider: &Arc<dyn IMediaProvider>,
content_type: Option<ContentType>,
) -> String {
match provider.list_genres(content_type.as_ref()).await {
Ok(genres) => ok_json(&genres),
Err(e) => domain_err(e),
}
}
pub async fn search_media(
provider: &Arc<dyn IMediaProvider>,
content_type: Option<ContentType>,
genres: Vec<String>,
search_term: Option<String>,
series_names: Vec<String>,
collections: Vec<String>,
) -> String {
let filter = MediaFilter {
content_type,
genres,
search_term,
series_names,
collections,
..Default::default()
};
match provider.fetch_items(&filter).await {
Ok(items) => ok_json(&items),
Err(e) => domain_err(e),
}
}