use rusqlite::{Result, Transaction}; use crate::db::{_securities, _users}; use crate::db::_accounts::create_checking_account; use crate::db::_external_id::UserId; use crate::db::_securities::{NewSecurity, Security, SecurityType}; use crate::db::_users::User; use crate::db::accounts::Account; use crate::util::CustomResult; pub fn mock_currency_1() -> NewSecurity { return NewSecurity { security_type: SecurityType::Currency, symbol: "P".to_string(), name: "piastre".to_string(), }; } pub fn mock_currency_2() -> NewSecurity { return NewSecurity { security_type: SecurityType::Bond, symbol: "B".to_string(), name: "bong".to_string(), }; } pub fn setup_users(tx: &Transaction) -> Result> { let user_1 = _users::create_user(tx, &"bernard".to_string(), &"123".to_string())?; let user_2 = _users::create_user(tx, &"sam".to_string(), &"abc".to_string())?; return Ok(vec![user_1, user_2]); } pub fn setup_securities(tx: &Transaction, _owner: &UserId) -> Result> { let sec_1 = _securities::create_security(tx, &mock_currency_1())?; let sec_2 = _securities::create_security(tx, &mock_currency_2())?; return Ok(vec![sec_1, sec_2]); } pub fn setup_users_and_securities(tx: &Transaction) -> Result<(Vec, Vec)> { let users = setup_users(tx)?; let securities = setup_securities(tx, &users.get(0).unwrap().id())?; Ok((users, securities)) } pub fn setup_basic_environment(tx: &Transaction) -> CustomResult<(Vec, Vec, Vec)> { let (users, securities) = setup_users_and_securities(tx).unwrap(); let acc1 = create_checking_account(tx, &securities.get(0).unwrap().id(), &users.get(0).unwrap().id())?; let acc2 = create_checking_account(tx, &securities.get(1).unwrap().id(), &users.get(1).unwrap().id())?; Ok((users, securities, vec![acc1, acc2])) }