b7cd2b1
use export::http::{Json, State};
use export::rest::{AppResponseData, NoData};
use jwt::Session;
use crate::errors::ApiError;
use crate::services::notifications::{SaveMessageCmd, SavedMessageDto};
use crate::services::service::UserService;
use jwt::share::session;
#[utoipa::path(
post,
path = "/me/messages/saved",
tag = "user",
description = "收藏指定消息,已收藏时幂等返回。",
request_body = SaveMessageCmd,
responses(
(status = 200, description = "save message", body = AppResponseData<SavedMessageDto>),
(status = 409, description = "resource already exists", body = AppResponseData<NoData>),
(status = 400, description = "request failed validation", body = AppResponseData<NoData>),
(status = 401, description = "authentication required", body = AppResponseData<NoData>)
)
)]
pub async fn save_message(
State(service): State<UserService>,
session: Session,
Json(cmd): Json<SaveMessageCmd>,
) -> Result<AppResponseData<SavedMessageDto>, ApiError> {
let uid = session::require_uid(&session)?;
let saved = service.save_message(uid, cmd).await?;
Ok(AppResponseData::ok(saved))
}