Skip to content

Sessions

Sessions provide transactional access to the database.

Creating Sessions

let db = Database::open_in_memory()?;

// Create a session
let session = db.session()?;

// Use the session
session.execute("INSERT (:Person {name: 'Alice'})")?;

Transactions

let session = db.session()?;

// Begin explicit transaction
session.begin()?;

session.execute("INSERT (:Person {name: 'Alice'})")?;
session.execute("INSERT (:Person {name: 'Bob'})")?;

// Commit
session.commit()?;

Rollback

let session = db.session()?;

session.begin()?;
session.execute("INSERT (:Person {name: 'Alice'})")?;

// Something went wrong, rollback
session.rollback()?;

Transaction Closure

let session = db.session()?;

// Execute in transaction with automatic commit/rollback
session.transaction(|tx| {
    tx.execute("INSERT (:Person {name: 'Alice'})")?;
    tx.execute("INSERT (:Person {name: 'Bob'})")?;
    Ok(())
})?;

Multiple Sessions

let db = Database::open_in_memory()?;

// Each session has isolated transactions
let session1 = db.session()?;
let session2 = db.session()?;

session1.begin()?;
session1.execute("INSERT (:Person {name: 'Alice'})")?;
// session2 won't see Alice until session1 commits

session1.commit()?;
// Now session2 can see Alice