INNER CODE UNIT · Rust

with_immediate_transaction

aannoo/hcom · src/db/mod.rs:153

    pub fn with_immediate_transaction<T>(
        &self,
        f: impl FnOnce(&Transaction<'_>) -> Result<T>,
    ) -> Result<T> {
        let txn = Transaction::new_unchecked(&self.conn, TransactionBehavior::Immediate)?;
        let result = f(&txn)?;
        txn.commit()?;
        Ok(result)
    }

    /// Run `f` atomically on this connection: in its own `BEGIN IMMEDIATE`
    /// transaction when none is open, or in a savepoint nested inside the
    /// caller's transaction. Any error rolls back every write made by `f`.
    pub fn with_write_scope<T>(&self, f: impl FnOnce() -> Result<T>) -> Result<T> {
        let own_transaction = self.conn.is_autocommit();
        let (begin, commit, rollback) = if own_transaction {
            ("BEGIN IMMEDIATE", "COMMIT", "ROLLBACK")
        } else {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…