Files
k-tv/crates/application/src/config_snapshots/restore.rs
Gabriel Kaszewski c0e685a4ee refactor(domain): Row structs for from_persistence, ID newtypes, kill clippy.toml
- delete clippy.toml (too-many-arguments-threshold=20 hack)
- ChannelRow/MediaItemRow/LibraryItemRow structs for from_persistence
- SnapshotId/ActivityEventId/PlaybackRecordId newtypes
- DomainError variants use ChannelId/UserId instead of Uuid
- ActivityEvent.channel_id: Option<ChannelId> not Option<Uuid>
- InMemory repos key on newtype IDs
- AlgorithmicParams struct for schedule engine
- update all adapters/application/presentation callers
2026-07-12 05:00:49 +02:00

35 lines
942 B
Rust

use domain::models::Channel;
use domain::{DomainError, DomainResult};
use super::commands::RestoreSnapshotCommand;
use super::deps::ConfigSnapshotDeps;
pub async fn execute(
deps: &ConfigSnapshotDeps,
cmd: RestoreSnapshotCommand,
) -> DomainResult<Channel> {
let snapshot = deps
.channel_query
.get_config_snapshot(cmd.channel_id, cmd.snapshot_id)
.await?
.ok_or(DomainError::ValidationError(format!(
"Snapshot {} not found",
cmd.snapshot_id
)))?;
let mut channel = deps
.channel_query
.find_by_id(cmd.channel_id)
.await?
.ok_or(DomainError::ChannelNotFound(cmd.channel_id))?;
deps.channel_command
.save_config_snapshot(cmd.channel_id, channel.schedule_config(), None)
.await?;
channel.set_schedule_config(snapshot.config().clone());
deps.channel_command.save(&channel).await?;
Ok(channel)
}