use api::http::{Json, State}; use ::session::AuthedUser; use api::rest::{AppResponseData, NoData}; use crate::AuthService; use crate::errors::ApiError; use crate::services::preferences::{UpdatePreferencesCmd, UserPreferencesDto}; #[utoipa::path( patch, path = "/me/preferences", tag = "account", description = "增量更新当前用户的通知、界面和静音等偏好设置。", request_body = UpdatePreferencesCmd, responses( (status = 200, description = "preferences updated, returning the canonical row", body = AppResponseData), (status = 400, description = "request failed validation", body = AppResponseData), (status = 401, description = "authentication required", body = AppResponseData) ) )] pub async fn update_preferences( State(service): State, AuthedUser(uid): AuthedUser, Json(cmd): Json, ) -> Result, ApiError> { let prefs = service .update_preferences(uid, cmd) .await .map_err(ApiError::from)?; Ok(AppResponseData::ok(prefs)) }