use axum::Json; use axum::Router; use axum::extract::{Path, State}; use axum::routing::get; use holzleitner_domain::Account; use crate::error::ApiError; use crate::extractors::AuthenticatedUser; use crate::state::AppState; pub fn router() -> Router { Router::new().route("/accounts/{personalnummer}", get(get_account)) } /// Liest den Account zu einer Personalnummer. #[utoipa::path( get, path = "/accounts/{personalnummer}", tag = "accounts", params( ("personalnummer" = i64, Path, description = "Personalnummer des Accounts") ), responses( (status = 200, description = "Account gefunden", body = Account), (status = 401, description = "Authentifizierung fehlgeschlagen"), (status = 404, description = "Kein Account zu dieser Personalnummer") ), security( ("bearer_auth" = []) ) )] pub async fn get_account( State(state): State, AuthenticatedUser(claims): AuthenticatedUser, Path(personalnummer): Path, ) -> Result, ApiError> { tracing::debug!( caller = claims.personalnummer, target = personalnummer, "get_account", ); let account = state.get_account.execute(personalnummer).await?; Ok(Json(account)) }