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