30 lines
652 B
Rust
30 lines
652 B
Rust
use actix_web::{post, web, Responder, Result};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::AppState;
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct OwnerData {
|
|
pub(crate) owner: String,
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct AccountCreated {
|
|
nr: String,
|
|
}
|
|
|
|
#[post("")]
|
|
pub async fn route(
|
|
form: web::Form<OwnerData>,
|
|
data: web::Data<AppState>,
|
|
) -> Result<impl Responder> {
|
|
let owner = &form.owner;
|
|
info!("creating new account with owner {}...", owner);
|
|
|
|
let mut bank = data.bank.write().unwrap();
|
|
let nr = bank.create_account(owner.clone());
|
|
info!("created account {}", nr);
|
|
|
|
Ok(web::Json(AccountCreated { nr }))
|
|
}
|