keradb_sdk/lib.rs
1//! # KeraDB Rust SDK
2//!
3//! A MongoDB-compatible Rust client for KeraDB — a lightweight, embedded NoSQL
4//! document database with advanced vector search capabilities.
5//!
6//! ## Usage
7//!
8//! ```no_run
9//! use keradb_sdk::*;
10//! use serde_json::json;
11//!
12//! // Open / create a database
13//! let mut client = connect("mydb.ndb").unwrap();
14//! let db = client.database();
15//! let users = db.collection("users");
16//!
17//! // Insert
18//! let result = users.insert_one(json!({"name": "Alice", "age": 30})).unwrap();
19//! println!("Inserted: {}", result.inserted_id);
20//!
21//! // Find
22//! let doc = users.find_one(Some(&json!({"_id": result.inserted_id}))).unwrap();
23//! println!("Found: {:?}", doc);
24//!
25//! // Update
26//! users.update_one(
27//! &json!({"_id": result.inserted_id}),
28//! &json!({"$set": {"age": 31}}),
29//! ).unwrap();
30//!
31//! // Delete
32//! users.delete_one(&json!({"_id": result.inserted_id})).unwrap();
33//!
34//! client.close();
35//! ```
36//!
37//! ## Vector search
38//!
39//! ```no_run
40//! use keradb_sdk::*;
41//!
42//! let mut client = connect("vectors.ndb").unwrap();
43//!
44//! let config = VectorConfig::new(128)
45//! .with_distance(Distance::Cosine)
46//! .with_m(16)
47//! .with_ef_construction(200);
48//!
49//! client.create_vector_collection("embeddings", &config).unwrap();
50//!
51//! let embedding: Vec<f32> = (0..128).map(|i| i as f32 / 128.0).collect();
52//! let id = client.insert_vector("embeddings", &embedding, None).unwrap();
53//!
54//! let results = client.vector_search("embeddings", &embedding, 5).unwrap();
55//! for r in results {
56//! println!("{}", r);
57//! }
58//!
59//! client.close();
60//! ```
61
62// @group Modules : Public submodule declarations
63
64pub mod client;
65pub mod error;
66pub mod ffi;
67pub mod results;
68pub mod vector;
69
70// @group Exports : Re-exports for ergonomic top-level usage
71
72// Connection
73pub use client::{connect, Client, Collection, Cursor, Database};
74
75// Error
76pub use error::{KeraDbError, Result};
77
78// Result types
79pub use results::{DeleteResult, InsertManyResult, InsertOneResult, UpdateResult};
80
81// Vector types
82pub use vector::{
83 CompressionConfig, CompressionMode, Distance, MetadataFilter, VectorCollectionInfo,
84 VectorCollectionStats, VectorConfig, VectorDocument, VectorSearchResult,
85};
86
87/// SDK version string.
88pub const VERSION: &str = env!("CARGO_PKG_VERSION");