nexus-scribe-db
Aegis-DB multi-paradigm database integration layer.
Overview
This crate provides a unified interface to Aegis-DB’s four data paradigms:
| Paradigm | Use Case | Module |
|---|---|---|
| Relational | Users, meetings, transcripts | relational.rs |
| Time-series | Audio metrics, system metrics | timeseries.rs |
| Document | Meeting insights, comments | document.rs |
| Graph | User networks, topic relationships | graph.rs |
Configuration
use nexus_scribe_db::{AegisDB, DatabaseConfig};
let config = DatabaseConfig {
host: "localhost".to_string(),
port: 9091,
database: "nexusscribe".to_string(),
username: "admin".to_string(),
password: "secret".to_string(),
pool_size: 10,
timeout_secs: 30,
};
let db = AegisDB::new(config).await?;
Relational Store
CRUD operations for core entities:
// Create user
let user_id = db.relational().create_user(&CreateUserRequest {
email: "user@example.com".to_string(),
password_hash: hash,
display_name: "John Doe".to_string(),
role: UserRole::User,
}).await?;
// Find user
let user = db.relational().find_user_by_email("user@example.com").await?;
// List meetings
let meetings = db.relational().list_meetings(user_id, 20, 0).await?;
Time-series Store
Metrics and temporal data:
// Record audio quality metric
db.timeseries().insert("audio_quality", timestamp, value).await?;
// Query metrics range
let metrics = db.timeseries()
.query("audio_quality", start_time, end_time)
.await?;
Document Store
Flexible JSON document storage:
// Store meeting insights
db.document().set(
"meeting_insights",
&meeting_id.to_string(),
json!({
"summary": "Discussion about Q4 goals",
"action_items": ["Review budget", "Schedule follow-up"]
})
).await?;
// Retrieve document
let insights = db.document()
.get("meeting_insights", &meeting_id.to_string())
.await?;
Graph Store
Relationship queries:
// Add collaboration edge
db.graph().add_edge(user1_id, user2_id, "collaborates_with").await?;
// Find collaborators
let collaborators = db.graph()
.neighbors(user_id, "collaborates_with")
.await?;
Transactions
Multi-paradigm transaction support:
let tx = db.begin_transaction().await?;
// Perform operations...
db.relational().create_meeting(&request).await?;
tx.commit().await?;
// or tx.rollback().await?;
Health Check
let health = db.health_check().await?;
println!("Relational: {}", health.relational);
println!("Timeseries: {}", health.timeseries);
println!("Document: {}", health.document);
println!("Graph: {}", health.graph);
println!("Overall: {}", health.overall);
SQL Injection Prevention
The crate includes sql_escape module for safe query construction:
use nexus_scribe_db::escape_sql_string;
let safe_value = escape_sql_string(user_input);
Usage
[dependencies]
nexus-scribe-db = { path = "../nexus-scribe-db" }