39f5f99bfd
refactor: replace get_stream_url with get_source_uri per ADR-0002
...
Providers now expose a source URI (for FFmpeg) instead of a
viewer-facing stream URL. Playout Service will own transcoding.
- Add SourceUri value object (NetworkUrl | FilePath)
- Remove StreamQuality, StreamingProtocol from domain
- Simplify ProviderCapabilities (drop streaming_protocol, transcode)
- Jellyfin: return static direct stream URL
- Local files: return absolute file path
- Rename use case get_stream_url -> get_source
- Stream endpoint returns JSON SourceUri instead of 307 redirect
2026-07-12 07:34:13 +02:00
826e824b58
replace tokio::broadcast event bus with SQLite-backed event queue (ADR-0003)
...
- DomainEvent: add Serialize/Deserialize
- EventConsumer port: poll_next/ack/nack replacing recv()
- EventEnvelope: wraps event with id/retry_count/created_at
- SqliteEventPublisher/SqliteEventConsumer: INSERT/poll/DLQ
- migration: event_queue + dead_letter_queue tables
- InMemoryEventBus: combined publisher+consumer test double
- NoopEventConsumer: test stub
- webhook_consumer: polls EventConsumer instead of broadcast::Receiver
- presentation+mcp wiring: create from SqlitePool
2026-07-12 07:23:21 +02:00
e2393be635
collapse 20 pass-through use cases; handlers call ports directly
...
delete get/list/list_by_owner channels, get_settings/activity_log admin,
get_item/get_sync_status/list_collections/list_seasons/list_shows/list_genres library,
get/list/delete providers, get/list/patch_label config_snapshots,
get_active/list_history/delete_after schedule — all single-delegation.
remove ChannelQueryDeps, LibraryQueryDeps, deleted query/command structs.
add direct port fields to AppState. update MCP crate accordingly.
2026-07-12 07:18:26 +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
9b18d3ff6d
remove OIDC/Postgres, replace ApiError w/ AppError, move params to api-types
2026-07-12 05:14:17 +02:00
031cba5cfb
fix: unreachable DbPool match arm for workspace feature unification
2026-07-12 04:39:06 +02:00
f6b2481758
clean(mcp): extract constants, use CARGO_PKG_VERSION, fix unreachable
...
- extract DEFAULT_DATABASE_URL, DEFAULT_SEARCH_LIMIT, SERVER_NAME
- use env!("CARGO_PKG_VERSION") instead of hardcoded "0.1.0"
- content_type_to_str returns &'static str instead of allocating String
- cfg guard on unreachable pattern in wire_repositories
2026-07-12 04:37:27 +02:00
dd4389d53e
deprecate k-tv-backend, fix workspace feature-unification build
2026-07-12 03:35:09 +02:00
c869e9ab84
mcp: MCP server calling application use cases
2026-07-12 03:31:08 +02:00