use rusqlite::{Params, Row, Transaction}; #[derive(Debug)] pub enum Error { SqlError(rusqlite::Error), DoubleBooking(String), InvalidDrawer(String), InvalidAmount(String), InvalidPayee(String), DoubleSpendingError(String), Testing(String), } pub type CustomResult = Result; pub struct TransactionHelper<'a> { tx: &'a Transaction<'a>, } impl TransactionHelper<'_> { pub fn new<'a>(tx: &'a Transaction) -> TransactionHelper<'a> { TransactionHelper { tx } } pub fn execute(&self, sql: &str, params: P) -> CustomResult { self.tx.execute(sql, params).map_err(Error::SqlError) } pub fn query_row(&self, sql: &str, params: P, f: F) -> CustomResult where P: Params, F: FnOnce(&Row<'_>) -> rusqlite::Result, { self.tx.query_row(sql, params, f).map_err(Error::SqlError) } // // pub fn commit(&self) -> CustomResult<()> { // self.tx.commit().map_err(Error::SqlError) // } }