use anyhow::{Context, Result}; use diesel::{QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; use schist_models::AccountTransfer; use schist_schema::schema::account_transfers::dsl::account_transfers as account_transfers_table; pub fn delete_all_account_transfers(connection: &mut SqliteConnection) -> Result { let num_rows_deleted = diesel::delete(account_transfers_table) .execute(connection) .with_context(|| "failed to delete all account_transfers")?; Ok(num_rows_deleted) } pub fn get_all_account_transfers( connection: &mut SqliteConnection, ) -> Result> { let all_account_transfers = account_transfers_table .select(AccountTransfer::as_select()) .load(connection) .with_context(|| "failed to get all account transfers")?; Ok(all_account_transfers) } pub fn insert_account_transfers( account_transfers: &[AccountTransfer], connection: &mut SqliteConnection, ) -> Result { let num_account_transfers_inserted = diesel::insert_into(account_transfers_table) .values(account_transfers) .execute(connection) .with_context(|| insert_err_msg(account_transfers))?; Ok(num_account_transfers_inserted) } fn insert_err_msg(account_transfers: &[AccountTransfer]) -> String { format!( "failed to insert account transfers: [{}]", account_transfers .iter() .map(|a| a.id.to_string()) .collect::>() .join(", ") ) }