lora_database/lib.rs
1//! In-memory Lora database — the database-facing orchestration layer.
2//!
3//! `lora-database` owns the parse → analyze → compile → execute pipeline
4//! and exposes a single [`Database`] entry point that transports (HTTP,
5//! benches, examples, embedded callers) can drive without knowing about the
6//! underlying crates.
7//!
8//! # Quick start
9//!
10//! ```no_run
11//! use lora_database::Database;
12//!
13//! let db = Database::in_memory();
14//! db.execute("CREATE (:User {name: 'alice'})", None).unwrap();
15//! ```
16
17mod archive;
18mod database;
19mod named;
20mod stream;
21mod transaction;
22
23pub use database::{Database, QueryRunner, SnapshotAdmin, WalAdmin, WalStatus};
24pub use named::{
25 resolve_database_path, DatabaseName, DatabaseNameError, DatabaseOpenOptions,
26 DEFAULT_DATABASE_MAX_BYTES,
27};
28pub use stream::QueryStream;
29pub use transaction::{Transaction, TransactionMode};
30
31// Re-export the WAL configuration types so transports / operators can
32// build a `Database::open_with_wal` argument without taking a direct
33// `lora-wal` dependency.
34pub use lora_wal::{SyncMode, WalConfig};
35
36// Re-export the core execution types so callers don't need a direct
37// dependency on `lora-executor`.
38pub use lora_executor::{ExecuteOptions, LoraValue, QueryResult, ResultFormat, Row};
39
40// Re-export the default in-memory backing store so callers only need to
41// depend on `lora-database` for the happy path.
42pub use lora_store::InMemoryGraph;
43
44// Snapshot surface — re-exported so bindings/servers don't need a direct
45// `lora-store` dependency just to name the meta / error types.
46pub use lora_store::{SnapshotError, SnapshotMeta, Snapshotable};
47
48// Standalone parsing entry point (does not require building a `Database`).
49pub use lora_parser::parse_query;