main
use ::session::AuthedUser;
use api::http::State;
use api::rest::{AppResponseData, NoData};
use crate::errors::ApiError;
use crate::services::avatar::AvatarDto;
use crate::services::service::UserService;
#[utoipa::path(
get,
path = "/me/avatar",
tag = "user",
description = "读取当前用户头像元数据;未设置时返回空数据。",
responses(
(status = 200, description = "current avatar", body = AppResponseData<Option<AvatarDto>>),
(status = 404, description = "resource not found", body = AppResponseData<NoData>),
(status = 401, description = "authentication required", body = AppResponseData<NoData>)
)
)]
pub async fn get_avatar(
State(service): State<UserService>,
AuthedUser(uid): AuthedUser,
) -> Result<AppResponseData<Option<AvatarDto>>, ApiError> {
let avatar = service.avatars.current_avatar(uid).await?;
Ok(AppResponseData::ok(avatar))
}