kill LibraryItem, unify to MediaItem; decouple schedule engine from providers

ADR-0001: MediaItem absorbs LibraryItem fields (provider_id, external_id,
collection_name, collection_type, synced_at, role/MediaRole).
LibraryItem + LibraryItemRow deleted. All ports/adapters/tests updated.

ADR-0002: schedule engine takes LibraryQuery instead of IProviderRegistry.
Algorithmic blocks query library via search(), manual blocks via get_by_id().
get_stream_url removed from engine; provider_registry moved to ScheduleDeps
for playback-time stream URL resolution in application layer.

BlockContent provider_id field removed (meaningless when querying library).
This commit is contained in:
2026-07-12 07:02:08 +02:00
parent 773e228e21
commit a6558e15b2
30 changed files with 324 additions and 354 deletions

View File

@@ -342,7 +342,6 @@ impl ProgrammingBlock {
content: BlockContent::Algorithmic {
filter,
strategy,
provider_id: String::new(),
},
loop_on_finish: true,
ignore_rotation_policy: false,
@@ -362,7 +361,6 @@ impl ProgrammingBlock {
duration_mins,
content: BlockContent::Manual {
items,
provider_id: String::new(),
},
loop_on_finish: true,
ignore_rotation_policy: false,
@@ -403,14 +401,10 @@ impl ProgrammingBlock {
pub enum BlockContent {
Manual {
items: Vec<MediaItemId>,
#[serde(default)]
provider_id: String,
},
Algorithmic {
filter: MediaFilter,
strategy: FillStrategy,
#[serde(default)]
provider_id: String,
},
}