dbnexus 0.1.3

An enterprise-grade database abstraction layer for Rust with built-in permission control and connection pooling
docs.rs failed to build dbnexus-0.1.3
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.


๐ŸŽฏ A high-performance, secure, and feature-rich database access layer built on Sea-ORM

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(())
}

๐Ÿ“‹ Table of Contents


โœจ Features

๐ŸŽฏ Core Features โšก Enterprise Features
Always Available Optional

๐ŸŽฏ Core Features (Always Available)

Status Feature Description
โœ… Connection Pooling RAII-style automatic connection lifecycle management
โœ… Permission Control Role-based table-level access control (RBAC)
โœ… Procedural Macros Auto-generate CRUD methods and permission checks
โœ… SQL Parser Extract operation type and target table
โœ… Transaction Support Complete transaction management
โœ… Multi-Database Support SQLite, PostgreSQL, MySQL

โšก Enterprise Features

Status Feature Description
๐Ÿ” Metrics Monitoring Prometheus metrics export (metrics feature)
๐Ÿ“Š Distributed Tracing OpenTelemetry integration (tracing feature)
๐Ÿ“ Audit Logging Automatic audit for all operations (audit feature)
๐Ÿ—„๏ธ Database Migration Automatic migration execution (migration feature)
๐Ÿ”€ Data Sharding Support for sharding strategies (sharding feature)
๐ŸŒ Global Index Cross-shard queries (global-index feature)
๐Ÿ’พ Caching LRU cache support (cache feature)
๐Ÿ” Permission Engine Advanced permission system (permission-engine feature)

๐Ÿ“ฆ Feature Presets

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

๐Ÿš€ Quick Start

๐Ÿ“ฆ Installation

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"] }

๐Ÿ’ก Basic Usage

๐ŸŽฌ 5-Minute Quick Start

Step 1: Define Entity

use dbnexus::{DbPool, DbEntity, db_crud};
use sea_orm::entity::prelude::*;

#[derive(DbEntity, DeriveEntityModel, DeriveModel, DeriveActiveModel)]
#[sea_orm(table_name = "users")]
#[db_crud]
pub struct User {
    #[sea_orm(primary_key)]
    pub id: i64,
    pub name: String,
    pub email: String,
}

Step 2: Create Connection Pool

#[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?;
    Ok(())
}

Step 3: Insert Data

let user = User {
    id: 1,
    name: "Alice".to_string(),
    email: "alice@example.com".to_string(),
};
User::insert(&session, user).await?;

Step 4: Query Data

let users = User::find_all(&session).await?;
println!("Found {} users", users.len());

๐Ÿ”’ Permission Control

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

๐ŸŽจ Feature Flags

Database Drivers (choose one)

# 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"] }

Runtime

# 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"] }

Optional Features

# 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)
] }

๐Ÿ“š Documentation

๐Ÿ“– Additional Resources

Resource Description
๐Ÿ“– User Guide Comprehensive guide for using DBNexus
๐Ÿ“˜ API Reference Complete API documentation
๐Ÿ—๏ธ Architecture System architecture and design decisions
๐Ÿ“ฆ Examples Working code examples

๐Ÿ’ป Examples

๐Ÿ’ก Real-world Examples

๐Ÿ“ Advanced Configuration

use dbnexus::{DbPool, config::DbConfigBuilder};

let config = DbConfigBuilder::new()
    .url("postgresql://user:pass@localhost/db")
    .max_connections(20)
    .min_connections(5)
    .idle_timeout(300)
    .acquire_timeout(5000)
    .build()?;

let pool = DbPool::with_config(config).await?;

๐Ÿ”ง Environment Variables

export DATABASE_URL="postgresql://user:pass@localhost/db"
export DB_MAX_CONNECTIONS=20
export DB_MIN_CONNECTIONS=5
export DB_ADMIN_ROLE=admin
let pool = DbPool::new().await?;

๐Ÿ”„ Transactions

let mut session = pool.get_session("admin").await?;

// Begin transaction
session.begin_transaction().await?;

// Multiple operations
User::insert(&session, user1).await?;
User::insert(&session, user2).await?;

// Commit
session.commit_transaction().await?;

๐Ÿ“Š Monitoring

use dbnexus::{DbPool, metrics::MetricsCollector};

let pool = DbPool::new("postgresql://localhost/db").await?;

// Get pool status
let status = pool.status();
println!("Active: {}, Idle: {}", status.active, status.idle);

// Export Prometheus metrics
let metrics = MetricsCollector::new(&pool);
println!("{}", metrics.export_prometheus());

๐Ÿ“‚ View all examples โ†’


๐Ÿ—๏ธ Architecture

๐Ÿ—๏ธ System Architecture

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.


๐Ÿ”’ Security

๐Ÿ›ก๏ธ Security Features

DBNexus is built with security in mind:

  • No unsafe code - #![forbid(unsafe_code)] in all library code
  • Permission enforcement - Table-level access control with compile-time verification
  • SQL injection prevention - Parameterized queries by default
  • Config path validation - Protection against path traversal attacks
  • Rate limiting - Permission check rate limiting to prevent abuse

๐Ÿงช Testing

๐ŸŽฏ Run Tests

# 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

Using Docker

# Start databases
make docker-up

# Run all tests
make test-all

# Stop databases
make docker-down

๐Ÿค Contributing

Contributions are welcome! Please check the repository for contribution guidelines.

Development Setup

# 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

๐Ÿ“„ License

This project is licensed under MIT:

License: MIT


๐Ÿ™ Acknowledgments

๐ŸŒŸ Built on Excellent Tools

  • Sea-ORM - The excellent ORM framework DBNexus is built on
  • SQLx - Async SQL toolkit
  • The Rust community for amazing tools and libraries

๐Ÿ“ž Support


โญ Star History

Star History Chart


๐Ÿ’ Support This Project

If you find this project useful, please consider giving it a โญ๏ธ!

Built with โค๏ธ by Kirky.X


โฌ† Back to Top


ยฉ 2026 Kirky.X. All rights reserved.