diff --git a/k-tv-backend/api/src/routes/channels/schedule.rs b/k-tv-backend/api/src/routes/channels/schedule.rs index ffd6a21..dc57dc8 100644 --- a/k-tv-backend/api/src/routes/channels/schedule.rs +++ b/k-tv-backend/api/src/routes/channels/schedule.rs @@ -130,5 +130,5 @@ pub(super) async fn rollback_schedule( let detail = format!("rollback to gen {}; {} slots", target.generation, schedule.slots.len()); let _ = state.activity_log_repo.log("schedule_rollback", &detail, Some(channel_id)).await; - Ok((StatusCode::CREATED, Json(ScheduleResponse::from(schedule)))) + Ok(Json(ScheduleResponse::from(schedule))) } diff --git a/k-tv-backend/domain/src/services/channel.rs b/k-tv-backend/domain/src/services/channel.rs index 1756d70..17b71fb 100644 --- a/k-tv-backend/domain/src/services/channel.rs +++ b/k-tv-backend/domain/src/services/channel.rs @@ -44,10 +44,12 @@ impl ChannelService { } pub async fn update(&self, channel: Channel) -> DomainResult { - // Auto-snapshot the config being replaced - self.channel_repo - .save_config_snapshot(channel.id, &channel.schedule_config, None) - .await?; + // Auto-snapshot the existing config before overwriting + if let Some(existing) = self.channel_repo.find_by_id(channel.id).await? { + self.channel_repo + .save_config_snapshot(channel.id, &existing.schedule_config, None) + .await?; + } self.channel_repo.save(&channel).await?; Ok(channel) }