26 lines
741 B
Rust
26 lines
741 B
Rust
use std::ops::Deref;
|
|
|
|
use actix_web::{get, web, Responder, Result};
|
|
|
|
use bank::account::AccountError;
|
|
use http_lib::json_account::JsonAccount;
|
|
|
|
use crate::handlers::error::HttpAccountError;
|
|
use crate::AppState;
|
|
|
|
#[get("/{nr}")]
|
|
pub async fn route(info: web::Path<String>, data: web::Data<AppState>) -> Result<impl Responder> {
|
|
let nr = info.into_inner();
|
|
info!("getting account {}...", nr);
|
|
|
|
let bank = data.bank.read().unwrap();
|
|
match bank.accounts.get(&nr) {
|
|
None => Err(HttpAccountError(AccountError::NotFound).into()),
|
|
Some(account) => {
|
|
let account = account.read().unwrap();
|
|
let account: JsonAccount = account.deref().into();
|
|
Ok(web::Json(account))
|
|
}
|
|
}
|
|
}
|