|
|
60524c56f7
|
add domain concepts: FillStrategy variants, Chapter, InterstitialRule, MidRollRule, gap_filler
- FillStrategy: +Alternating (round-robin series), +Weighted (fresh-first), +Marathon (always ep1, loops)
- Chapter value object on MediaItem (JSON column in library_items)
- InterstitialRule + MidRollRule on ProgrammingBlock (data model only)
- gap_filler: Option<MediaFilter> on Channel (persisted as JSON column)
- migration: 20260712000002_add_chapters_and_gap_filler.sql
|
2026-07-12 07:41:57 +02:00 |
|
|
|
a6558e15b2
|
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).
|
2026-07-12 07:02:08 +02:00 |
|
|
|
773e228e21
|
rename RecyclePolicy→RotationPolicy, collapse AccessMode, clean OIDC refs
|
2026-07-12 06:50:25 +02:00 |
|
|
|
98a54245b1
|
domain crate code quality cleanup
strip all comments, extract tests to tests/ dirs,
remove #[allow(clippy::...)], extract magic numbers to
constants, refactor schedule engine private methods to
use param structs, add Default impls, clippy.toml for
persistence constructors
|
2026-07-12 04:02:12 +02:00 |
|
|
|
b2e71403d8
|
domain value objects: auth, scheduling, channel, oidc, search
|
2026-07-12 01:05:31 +02:00 |
|