use actix_web::{patch, web, HttpResponse, Responder, Result}; use serde::Serialize; use bank::bank::Bank; use crate::handlers::error::HttpAccountError; use crate::handlers::AmountData; use crate::AppState; #[derive(Serialize)] struct AccountCreated { nr: String, } #[patch("/{nr}/deposit")] pub async fn route( info: web::Path, form: web::Form, data: web::Data, ) -> Result { let nr = info.into_inner(); let amount = form.amount; info!("depositing {} into account {}...", amount, nr); let bank = data.bank.read().unwrap(); match Bank::account_action(bank, &nr, |account| account.deposit(amount)) { Err(e) => Err(HttpAccountError(e).into()), Ok(_) => Ok(HttpResponse::Ok().finish()), } }