Skip to main content

graphlite_sdk/
lib.rs

1//! GraphLite SDK - High-level ergonomic Rust API for GraphLite
2//!
3//! This crate provides a high-level, developer-friendly SDK on top of GraphLite's core API.
4//! It offers ergonomic patterns, type safety, connection management, query builders, and
5//! transaction support - everything needed to build robust graph-based applications in Rust.
6//!
7//! # Quick Start
8//!
9//! ```no_run
10//! use graphlite_sdk::{GraphLite, Error};
11//!
12//! # fn main() -> Result<(), Error> {
13//! // Open database
14//! let db = GraphLite::open("./mydb")?;
15//!
16//! // Create session and execute query
17//! let session = db.create_session("admin")?;
18//! let result = db.query("MATCH (p:Person) RETURN p.name", &session)?;
19//!
20//! // Process results
21//! for row in result.rows() {
22//!     println!("Name: {:?}", row.get("p.name"));
23//! }
24//! # Ok(())
25//! # }
26//! ```
27//!
28//! # Features
29//!
30//! - **Connection Management** - Simple connection API with automatic session handling
31//! - **Query Builder** - Fluent API for building type-safe GQL queries
32//! - **Transaction Support** - ACID transactions with automatic rollback
33//! - **Typed Results** - Deserialize query results into Rust structs
34//! - **Connection Pooling** - Efficient concurrent access (future)
35//! - **Async Support** - Full tokio integration (future)
36//!
37//! # Architecture
38//!
39//! ```text
40//! ┌─────────────────────────────────────────┐
41//! │   Application Code (Your Rust App)     │
42//! └─────────────────────────────────────────┘
43//!                  │
44//!                  ▼
45//! ┌─────────────────────────────────────────┐
46//! │  GraphLite SDK (this crate)             │
47//! │  - GraphLite (main API)                 │
48//! │  - Session (session management)         │
49//! │  - QueryBuilder (fluent queries)        │
50//! │  - Transaction (ACID support)           │
51//! │  - TypedResult (deserialization)        │
52//! └─────────────────────────────────────────┘
53//!                  │
54//!                  ▼
55//! ┌─────────────────────────────────────────┐
56//! │  GraphLite Core (graphlite crate)       │
57//! │  - QueryCoordinator                     │
58//! │  - Storage Engine                       │
59//! │  - Catalog Manager                      │
60//! └─────────────────────────────────────────┘
61//! ```
62//!
63//! # Module Organization
64//!
65//! - [`connection`] - Database connection and session management
66//! - [`query`] - Query builder and execution
67//! - [`transaction`] - Transaction support
68//! - [`result`] - Result handling and deserialization
69//! - [`error`] - Error types and handling
70
71// Re-export core types for convenience
72pub use graphlite::{QueryInfo, QueryPlan, QueryResult, QueryType, Row, Value};
73
74// SDK modules
75pub mod connection;
76pub mod error;
77pub mod query;
78pub mod result;
79pub mod transaction;
80
81// Re-export main types for convenience
82pub use connection::{GraphLite, Session};
83pub use error::{Error, Result};
84pub use query::QueryBuilder;
85pub use result::TypedResult;
86pub use transaction::Transaction;