Files
movies-diary/crates/application/src/users/update_settings.rs
Gabriel Kaszewski ca7ca51949 feat: per-entity federation privacy toggles for reviews and watchlist
- add federate_reviews + federate_watchlist to UserSettings (default true)
- new UserFederationSettingsQuery port with FederationFlags struct
- remove get_user_federate_goals from LocalApContentQuery
- gate ReviewLogged, ReviewUpdated, WatchlistEntryAdded, on_poster_synced on flags
- goals gating migrated to UserFederationSettingsQuery
- ReviewDeleted and WatchlistEntryRemoved ungated (tombstones always fire)
- sqlite + postgres migrations and adapter impls
- settings API and SPA toggles
2026-06-12 02:26:01 +02:00

27 lines
795 B
Rust

use std::sync::Arc;
use domain::{errors::DomainError, ports::UserSettingsRepository, value_objects::UserId};
pub struct UpdateUserSettingsCommand {
pub user_id: uuid::Uuid,
pub federate_goals: bool,
pub federate_reviews: bool,
pub federate_watchlist: bool,
}
pub async fn execute(
user_settings: Arc<dyn UserSettingsRepository>,
cmd: UpdateUserSettingsCommand,
) -> Result<(), DomainError> {
let uid = UserId::from_uuid(cmd.user_id);
let mut settings = user_settings.get(&uid).await?;
settings.set_federate_goals(cmd.federate_goals);
settings.set_federate_reviews(cmd.federate_reviews);
settings.set_federate_watchlist(cmd.federate_watchlist);
user_settings.save(&settings).await
}
#[cfg(test)]
#[path = "tests/update_settings.rs"]
mod tests;