aurora_db/lib.rs
1//! # Aurora Database
2//!
3//! Aurora is an embedded document database with tiered storage architecture.
4//! It provides document storage, querying, indexing, and search capabilities
5//! while optimizing for both performance and durability.
6//!
7//! ## Key Features
8//!
9//! * **Tiered Storage**: Hot in-memory cache + persistent cold storage
10//! * **Document Model**: Schema-flexible JSON-like document storage
11//! * **Querying**: Rich query capabilities with filtering and sorting
12//! * **Full-text Search**: Built-in search engine with relevance ranking
13//! * **Transactions**: ACID-compliant transaction support
14//!
15//! ## Quick Start
16//!
17
18//! use aurora_db::{Aurora, Value, FieldType};
19//!
20//!
21//! #[tokio::main]
22//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
23//! // Open a database
24//! let db = Aurora::open("my_app.db")?;
25//!
26//! // Create a collection
27//! db.new_collection("users", vec![
28//! ("name", FieldType::String, false),
29//! ("email", FieldType::String, true), // unique field
30//! ("age", FieldType::Int, false),
31//! ]).await?;
32//!
33//! // Insert data
34//! let user_id = db.insert_into("users", vec![
35//! ("name", Value::String("Jane Doe".to_string())),
36//! ("email", Value::String("jane@example.com".to_string())),
37//! ("age", Value::Int(28)),
38//! ]).await?;
39//!
40//! // Query data
41//! let users = db.query("users")
42//! .filter(|f| f.gt("age", 21))
43//! .collect()
44//! .await?;
45//!
46//! # Ok(())
47//! # }
48//! ```
49
50// Re-export primary types and modules
51pub use crate::db::Aurora;
52pub use crate::error::{AqlError, Result};
53pub use crate::query::{QueryBuilder, SimpleQueryBuilder, SearchBuilder};
54pub use types::{
55 AuroraConfig, ColdStoreMode, Collection, Document, DurabilityMode, FieldDefinition, FieldType,
56 Value,
57};
58
59pub use crate::parser::validator::{
60 ErrorCode, InMemorySchema, SchemaProvider, ValidationError, ValidationResult, validate_document,
61};
62
63// Re-export commonly used storage types
64pub use storage::{EvictionPolicy, HotStore};
65
66// Re-export PubSub types for convenience
67pub use pubsub::{ChangeEvent, ChangeListener, ChangeType};
68
69// Re-export Workers types for convenience
70pub use workers::{Job, JobPriority, JobStatus};
71
72// Re-export Transaction types for convenience
73pub use transaction::{TransactionBuffer, TransactionId};
74
75// Module declarations
76pub mod audit;
77pub mod client;
78pub mod computed;
79pub mod db;
80pub mod error;
81pub mod index;
82pub mod network;
83pub mod parser; // AQL parser module
84pub mod pubsub;
85pub mod query;
86pub mod reactive;
87pub mod search;
88pub mod storage;
89pub mod transaction;
90pub mod types;
91pub mod wal;
92pub mod workers;