use ::session::AuthedUser; use api::http::{Json, Path, State}; use api::rest::{AppResponseData, NoData}; use uuid::Uuid; use crate::errors::ApiError; use crate::services::profile::{MemeDto, UpsertMemeCmd}; use crate::services::service::UserService; #[utoipa::path( put, path = "/me/memes/{meme_id}", tag = "user", description = "全量更新当前用户指定 meme 条目的元数据。", params(("meme_id" = Uuid, Path)), request_body = UpsertMemeCmd, responses( (status = 200, description = "meme updated", body = AppResponseData), (status = 404, description = "not found", body = AppResponseData), (status = 400, description = "request failed validation", body = AppResponseData), (status = 401, description = "authentication required", body = AppResponseData) ) )] pub async fn update_meme( State(service): State, AuthedUser(uid): AuthedUser, Path(meme_id): Path, Json(cmd): Json, ) -> Result, ApiError> { let meme = service.update_meme(uid, meme_id, cmd).await?; Ok(AppResponseData::ok(meme)) }