46 lines
1.7 KiB
Rust
46 lines
1.7 KiB
Rust
use rusqlite::{Connection, Transaction};
|
|
use crate::db::accounts::{create_checking_account, create_security_emitter_account};
|
|
|
|
use crate::db::securities::create_security;
|
|
use crate::db::users::create_user;
|
|
use crate::events::{CreateNewAccount, CreateNewSecurity, CreateNewUser, EmitSecurities, Event};
|
|
use crate::util::{CustomResult, Error};
|
|
|
|
fn process_create_new_security_event(
|
|
tx: &Transaction,
|
|
event: CreateNewSecurity,
|
|
) -> CustomResult<()> {
|
|
let r = event.to_create_new_security().unwrap();
|
|
let sec = create_security(tx, &r)?;
|
|
create_security_emitter_account(&tx, &sec.id(), &event.userId)?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
fn process_create_new_user_event(tx: &mut Transaction, event: CreateNewUser) -> CustomResult<()> {
|
|
create_user(&tx, &event.name, &event.public_key)?;
|
|
Ok(())
|
|
}
|
|
|
|
fn process_create_new_account_event(tx: &mut Transaction, event: CreateNewAccount) -> CustomResult<()> {
|
|
create_checking_account(&tx, &event.securityId, &event.userId)?;
|
|
Ok(())
|
|
}
|
|
|
|
fn process_emit_securities_event(tx: &mut Transaction, event: EmitSecurities) -> CustomResult<()> {
|
|
// create_checking_account(&tx, &event.securityId, &event.userId)?;
|
|
println!("Here it goes > {:?}", event);
|
|
Ok(())
|
|
}
|
|
|
|
pub fn process_event(conn: &mut Connection, event: Event) -> CustomResult<()> {
|
|
let mut tx = conn.transaction().map_err(Error::SqlError)?;
|
|
match event {
|
|
Event::CreateNewSecurity(e) => process_create_new_security_event(&mut tx, e)?,
|
|
Event::CreateNewUser(e) => process_create_new_user_event(&mut tx, e)?,
|
|
Event::CreateNewAccount(e) => process_create_new_account_event(&mut tx, e)?,
|
|
Event::EmitSecurities(e) => process_emit_securities_event(&mut tx, e)?,
|
|
};
|
|
tx.commit().map_err(Error::SqlError)
|
|
}
|