use ::session::AuthedUser; use api::http::{Json, State}; use api::rest::{AppResponseData, NoData}; use crate::errors::ApiError; use crate::services::profile::{MemeDto, UpsertMemeCmd}; use crate::services::service::UserService; #[utoipa::path( post, path = "/me/memes", tag = "user", description = "创建当前用户唯一的 meme 名称条目。", request_body = UpsertMemeCmd, responses( (status = 200, description = "meme created", body = AppResponseData), (status = 409, description = "resource already exists", body = AppResponseData), (status = 400, description = "request failed validation", body = AppResponseData), (status = 401, description = "authentication required", body = AppResponseData) ) )] pub async fn create_meme( State(service): State, AuthedUser(uid): AuthedUser, Json(cmd): Json, ) -> Result, ApiError> { let meme = service.create_meme(uid, cmd).await?; Ok(AppResponseData::ok(meme)) }