//! K-TV Infrastructure Layer //! //! Concrete adapters for the repository and provider ports defined in the domain. //! //! ## Repository adapters //! - `SqliteUserRepository` / `PostgresUserRepository` //! - `SqliteChannelRepository` / `PostgresChannelRepository` //! - `SqliteScheduleRepository` / `PostgresScheduleRepository` //! //! ## Media provider adapters //! - `JellyfinMediaProvider` (feature = `"jellyfin"`) //! //! ## Database //! - [`db::run_migrations`] — run all pending SQLite/Postgres migrations pub mod auth; pub mod db; pub mod factory; pub mod jellyfin; pub mod provider_registry; mod activity_log_repository; mod channel_repository; mod schedule_repository; mod user_repository; #[cfg(feature = "local-files")] pub mod local_files; // Re-export for convenience pub use db::run_migrations; pub use provider_registry::ProviderRegistry; #[cfg(feature = "sqlite")] pub use activity_log_repository::SqliteActivityLogRepository; #[cfg(feature = "sqlite")] pub use user_repository::SqliteUserRepository; #[cfg(feature = "sqlite")] pub use channel_repository::SqliteChannelRepository; #[cfg(feature = "sqlite")] pub use schedule_repository::SqliteScheduleRepository; #[cfg(feature = "jellyfin")] pub use jellyfin::{JellyfinConfig, JellyfinMediaProvider}; #[cfg(feature = "local-files")] pub use local_files::{LocalFilesConfig, LocalFilesProvider, LocalIndex, TranscodeManager, decode_stream_id};