pub struct Session { /* private fields */ }Expand description
Represents an active database session
Sessions provide user context and are required for executing queries. Unlike SQLite, GraphLite uses sessions for user authentication, permissions, and transaction isolation.
§Examples
let session = db.session("admin")?;
let result = session.query("MATCH (n) RETURN n")?;Implementations§
Source§impl Session
impl Session
Sourcepub fn id(&self) -> &str
pub fn id(&self) -> &str
Get the session ID
The session ID is used internally for query execution and transaction management.
Sourcepub fn query(&self, query: &str) -> Result<QueryResult>
pub fn query(&self, query: &str) -> Result<QueryResult>
Execute a GQL query in this session
This is the main method for executing queries. For simple read queries, this is all you need. For multi-statement operations that need atomicity, use transactions instead.
§Arguments
query- GQL query string
§Examples
let session = db.session("admin")?;
// Simple query
let result = session.query("MATCH (n:Person) RETURN n")?;
// Query with parameters (using GQL parameter syntax)
let result = session.query("MATCH (n:Person {name: 'Alice'}) RETURN n")?;Sourcepub fn execute(&self, statement: &str) -> Result<()>
pub fn execute(&self, statement: &str) -> Result<()>
Execute a statement without returning results
This is useful for DDL statements (CREATE SCHEMA, CREATE GRAPH, etc.) and DML statements where you don’t need the results.
§Arguments
statement- GQL statement to execute
§Examples
let session = db.session("admin")?;
// Create a node
session.execute("CREATE (p:Person {name: 'Alice', age: 30})")?;
// Create a schema
session.execute("CREATE SCHEMA my_schema")?;Sourcepub fn transaction(&self) -> Result<Transaction<'_>>
pub fn transaction(&self) -> Result<Transaction<'_>>
Begin a new transaction
Transactions provide ACID guarantees and can be committed or rolled back. Following the rusqlite pattern, transactions will automatically roll back when dropped unless explicitly committed.
§Examples
let session = db.session("admin")?;
// Transaction with explicit commit
let mut tx = session.transaction()?;
tx.execute("CREATE (p:Person {name: 'Alice'})")?;
tx.execute("CREATE (p:Person {name: 'Bob'})")?;
tx.commit()?;
// Transaction that auto-rolls back (dropped without commit)
{
let mut tx = session.transaction()?;
tx.execute("CREATE (p:Person {name: 'Charlie'})")?;
// tx is dropped here, changes are rolled back
}Source§impl<'session> Session
impl<'session> Session
Sourcepub fn query_builder(&self) -> QueryBuilder<'_>
pub fn query_builder(&self) -> QueryBuilder<'_>
Get a query builder for this session
Convenience method for creating a query builder.
§Examples
let session = db.session("admin")?;
let result = session.query_builder()
.match_pattern("(p:Person)")
.return_clause("p")
.execute()?;