vesys-bank-server/http-server/src/handlers/get_account.rs

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))
}
}
}