feat(presentation): state, errors, extractors, auth and user handlers

This commit is contained in:
2026-05-14 03:56:42 +02:00
parent adc2102927
commit fb39ea2469
12 changed files with 158 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
use axum::{extract::{Path, State}, Json};
use api_types::{requests::UpdateProfileRequest, responses::UserResponse};
use application::use_cases::profile::{get_user_by_username, update_profile};
use crate::{errors::ApiError, extractors::AuthUser, handlers::auth::to_user_response, state::AppState};
pub async fn get_user(State(s): State<AppState>, Path(username): Path<String>) -> Result<Json<UserResponse>, ApiError> {
let user = get_user_by_username(&*s.users, &username).await?;
Ok(Json(to_user_response(&user)))
}
pub async fn patch_profile(State(s): State<AppState>, AuthUser(uid): AuthUser, Json(body): Json<UpdateProfileRequest>) -> Result<Json<UserResponse>, ApiError> {
update_profile(&*s.users, &uid, body.display_name, body.bio, body.avatar_url, body.header_url, body.custom_css).await?;
let user = s.users.find_by_id(&uid).await?.ok_or(domain::errors::DomainError::NotFound)?;
Ok(Json(to_user_response(&user)))
}