| Crates.io | dbnexus |
| lib.rs | dbnexus |
| version | 0.1.3 |
| created_at | 2025-12-31 13:36:26.109026+00 |
| updated_at | 2026-01-23 16:23:19.990551+00 |
| description | An enterprise-grade database abstraction layer for Rust with built-in permission control and connection pooling |
| homepage | |
| repository | https://github.com/Kirky-X/dbnexus |
| max_upload_size | |
| id | 2014702 |
| size | 1,630,092 |
Enterprise-grade Database Abstraction Layer for Rust
✨ Features • 🚀 Quick Start • 📚 Documentation • 💻 Examples • 🤝 Contributing
DBNexus provides a declarative database access approach:
| ✨ Type Safe | 🔒 Permission Control | 🏊 Smart Pooling | 📊 Enterprise Monitoring |
|---|---|---|---|
| Compile-time checks | Table-level RBAC | RAII auto-management | Prometheus metrics |
use dbnexus::{DbPool, DbEntity, db_crud, db_permission};
use sea_orm::entity::prelude::*;
#[derive(DbEntity, DeriveEntityModel, DeriveModel, DeriveActiveModel)]
#[sea_orm(table_name = "users")]
#[db_crud]
#[db_permission(roles = ["admin", "manager"], operations = ["SELECT", "INSERT"])]
pub struct User {
#[sea_orm(primary_key)]
pub id: i64,
pub name: String,
pub email: String,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let pool = DbPool::new("sqlite::memory:").await?;
let session = pool.get_session("admin").await?;
let user = User { id: 1, name: "Alice".to_string(), email: "alice@example.com".to_string() };
User::insert(&session, user).await?;
Ok(())
}
| 🎯 Core Features | ⚡ Enterprise Features |
|---|---|
| Always Available | Optional |
🎯 Core Features (Always Available)
|
⚡ Enterprise Features
|
| Preset | Features | Use Case |
|---|---|---|
| ultra-minimal | runtime-tokio-rustls, sqlite, config-env, lru |
Ultra-minimal for embedded devices (no permission/sql-parser/macros) |
| minimal | runtime-tokio-rustls, sqlite, config-env, lru, regex, sql-parser |
Minimal for embedded devices |
| microservice | runtime-tokio-rustls, postgres, permission, sql-parser, config-env, pool-health-check, config-yaml, regex, lru |
Microservice setup |
| all-optional | All enterprise features except database drivers | Full enterprise features |
Add this to your Cargo.toml:
[dependencies]
dbnexus = "0.1.2"
tokio = { version = "1.42", features = ["rt-multi-thread", "macros"] }
sea-orm = { version = "2.0.0-rc.27", features = ["macros"] }
|
Step 1: Define Entity
|
Step 2: Create Connection Pool
|
|
Step 3: Insert Data
|
Step 4: Query Data
|
use dbnexus::{DbPool, DbEntity, db_crud, db_permission};
use sea_orm::entity::prelude::*;
#[derive(DbEntity, DeriveEntityModel, DeriveModel, DeriveActiveModel)]
#[sea_orm(table_name = "users")]
#[db_crud]
#[db_permission(roles = ["admin", "manager"], operations = ["SELECT", "INSERT"])]
pub struct User {
#[sea_orm(primary_key)]
pub id: i64,
pub name: String,
}
// Admin can access
let session = pool.get_session("admin").await?;
User::find_all(&session).await?;
// Regular user will be denied
let session = pool.get_session("guest").await?;
User::find_all(&session).await?; // Error: Permission denied
# SQLite (default)
dbnexus = { version = "0.1.1", features = ["sqlite"] }
# PostgreSQL
dbnexus = { version = "0.1.1", features = ["postgres"] }
# MySQL
dbnexus = { version = "0.1.1", features = ["mysql"] }
# Tokio with RustLS (default)
dbnexus = { version = "0.1.1", features = ["runtime-tokio-rustls"] }
# Tokio with Native TLS
dbnexus = { version = "0.1.1", features = ["runtime-tokio-native-tls"] }
# AsyncStd
dbnexus = { version = "0.1.1", features = ["runtime-async-std"] }
# Core features
dbnexus = { version = "0.1.1", features = [
"permission", # Permission control
"sql-parser", # SQL parsing
"macros", # Procedural macros
] }
# Enterprise features
dbnexus = { version = "0.1.1", features = [
"metrics", # Prometheus metrics
"tracing", # Distributed tracing
"audit", # Audit logging
"migration", # Database migration
"sharding", # Data sharding
"permission-engine" # Advanced permission engine
] }
# Configuration
dbnexus = { version = "0.1.1", features = [
"config-yaml", # YAML config support
"config-toml", # TOML config support
"config-env", # Environment variables (default)
] }
|
📖 User Guide
Comprehensive guide |
📘 API Reference
Complete API docs |
💻 Examples
Code examples |
| Resource | Description |
|---|---|
| 📖 User Guide | Comprehensive guide for using DBNexus |
| 📘 API Reference | Complete API documentation |
| 🏗️ Architecture | System architecture and design decisions |
| 📦 Examples | Working code examples |
📝 Advanced Configuration
|
🔧 Environment Variables
|
🔄 Transactions
|
📊 Monitoring
|
graph TD
A[Application Layer<br/>Your code using DbPool and Session] --> B[DBNexus API Layer<br/>DbPool, Session<br/>Permission checking<br/>Transaction management]
B --> C[Feature Modules<br/>Config, Permission, Metrics<br/>Migration, Sharding, Audit]
C --> D[Connection Pool<br/>Connection lifecycle management<br/>Health checking<br/>RAII guarantees]
D --> E[Sea-ORM / SQLx<br/>Database drivers<br/>Query builder]
See ARCHITECTURE.md for detailed architecture documentation.
DBNexus is built with security in mind:
#![forbid(unsafe_code)] in all library code# Database-specific tests
make test-sqlite # SQLite
make test-postgres # PostgreSQL (requires Docker)
make test-mysql # MySQL (requires Docker)
make test-all # All databases
# Preset configuration tests
make test-minimal # Minimal preset (core features only)
make test-microservice # Microservice preset (full features)
make test-ultra-minimal # Ultra-minimal preset (embedded devices)
# Run all tests
cargo test --all-features
# Start databases
make docker-up
# Run all tests
make test-all
# Stop databases
make docker-down
Contributions are welcome! Please check the repository for contribution guidelines.
# Clone repository
git clone https://github.com/Kirky-X/dbnexus.git
cd dbnexus
# Install pre-commit hooks
./scripts/install-pre-commit.sh
# Run tests
cargo test --all-features
# Run linter
cargo clippy --all-features
|
📋 Issues
Report bugs and issues |
💬 Discussions
Ask questions and share ideas |
🐙 GitHub
View source code |
If you find this project useful, please consider giving it a ⭐️!
Built with ❤️ by Kirky.X
© 2026 Kirky.X. All rights reserved.