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;