Skip to content
Clone
main
32 lines 1.2 KB Rust
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<MemeDto>),
(status = 404, description = "not found", body = AppResponseData<NoData>),
(status = 400, description = "request failed validation", body = AppResponseData<NoData>),
(status = 401, description = "authentication required", body = AppResponseData<NoData>)
)
)]
pub async fn update_meme(
State(service): State<UserService>,
AuthedUser(uid): AuthedUser,
Path(meme_id): Path<Uuid>,
Json(cmd): Json<UpsertMemeCmd>,
) -> Result<AppResponseData<MemeDto>, ApiError> {
let meme = service.update_meme(uid, meme_id, cmd).await?;
Ok(AppResponseData::ok(meme))
}