1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//! # Reinhardt NoSQL
//!
//! NoSQL database abstractions for the Reinhardt framework.
//!
//! This crate provides a unified interface for working with various NoSQL databases,
//! organized by paradigm (Document, Key-Value, Column-Family, Graph).
//!
//! ## Features
//!
//! - **Document Databases**: MongoDB, CouchDB (planned)
//! - **Key-Value Stores**: Redis (planned), DynamoDB (planned)
//! - **Column-Family Stores**: Cassandra (planned)
//! - **Graph Databases**: Neo4j (planned)
//!
//! ## Architecture
//!
//! The crate is organized around a trait hierarchy.
//! See [`NoSQLBackend`] for the architecture diagram.
//!
//! ## Feature Flags
//!
//! Individual database backends can be enabled via feature flags:
//!
//! - `mongodb` - MongoDB support
//! - `redis` - Redis support (planned)
//! - `cassandra` - Cassandra support (planned)
//! - `dynamodb` - DynamoDB support (planned)
//! - `neo4j` - Neo4j support (planned)
//!
//! Convenience feature groups:
//!
//! - `nosql-all` - Enable all NoSQL backends
//! - `nosql-document` - Enable all document-oriented databases
//! - `nosql-key-value` - Enable all key-value stores
//! - `nosql-column` - Enable all column-family stores
//! - `nosql-graph` - Enable all graph databases
//! - `full` - Enable all features
//!
//! ## Example
//!
//! ```rust,ignore
//! use reinhardt_db::nosql::{
//! backends::mongodb::MongoDBBackend,
//! traits::DocumentBackend,
//! };
//! use bson::doc;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // Connect to MongoDB
//! let db = MongoDBBackend::new("mongodb://localhost:27017", "mydb").await?;
//!
//! // Insert a document
//! let id = db.insert_one("users", doc! {
//! "name": "Alice",
//! "email": "alice@example.com"
//! }).await?;
//!
//! // Find the document
//! let user = db.find_one("users", doc! { "_id": id }).await?;
//!
//! Ok(())
//! }
//! ```
// Re-export commonly used types
pub use ;
pub use ;
pub use ;
// Re-export ODM types
pub use ;
// Re-export Repository
pub use Repository;
/// Prelude module for convenient imports
///
/// Import everything from this module to get started quickly:
///
/// ```rust,ignore
/// use reinhardt_db::nosql::prelude::*;
/// ```