[package]
edition = "2024"
rust-version = "1.85"
name = "dbnexus"
version = "0.3.1"
authors = ["Kirky.X"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "An enterprise-grade database abstraction layer for Rust with built-in permission control and connection pooling"
documentation = "https://docs.rs/dbnexus"
readme = "README.md"
keywords = [
"database",
"orm",
"sea-orm",
"sql",
]
categories = [
"database",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/Kirky-X/dbnexus"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
all-optional = [
"cache",
"observability",
"data-management",
"security",
"migration",
]
audit = [
"chrono",
"uuid",
]
authentication = [
"jsonwebtoken",
"bcrypt",
]
auto-migrate = ["migration"]
bench = ["criterion"]
cache = ["oxcache"]
cli-tests = []
config-env = []
config-toml = ["toml"]
data-management = [
"migration",
"auto-migrate",
"sharding",
"global-index",
]
default = [
"runtime-tokio-rustls",
"sqlite",
"permission",
"sql-parser",
"macros",
"config-env",
"with-time",
]
dev = []
dev-full = [
"dev",
"bench",
"test-utils",
]
duckdb = ["dep:duckdb"]
embedded = [
"runtime-tokio-rustls",
"sqlite",
"config-env",
]
enterprise = [
"postgres",
"monolith",
"permission-engine",
]
global-index = [
"chrono",
"with-json",
]
health-check = []
json = []
macros = ["dbnexus-macros"]
metrics = []
microservice = [
"runtime-tokio-rustls",
"postgres",
"permission",
"sql-parser",
"config-env",
"observability",
]
migration = [
"sqlparser",
"regex",
]
monolith = [
"runtime-tokio-rustls",
"postgres",
"permission",
"sql-parser",
"yaml",
"data-management",
"security",
"observability",
]
mysql = [
"sea-orm/sqlx-mysql",
"sea-orm/macros",
]
observability = [
"metrics",
"health-check",
"tracing",
]
permission = [
"dashmap",
"futures",
"yaml",
"sql-parser",
]
permission-engine = [
"dashmap",
"cache",
"futures",
"once_cell",
"regex",
]
pool-health-check = ["futures"]
pool-warmup = ["futures"]
postgres = [
"sea-orm/sqlx-postgres",
"sea-orm/macros",
]
runtime-async-std = ["sea-orm/runtime-async-std"]
runtime-tokio-native-tls = [
"sea-orm/runtime-tokio-native-tls",
"tokio/rt-multi-thread",
"tokio/fs",
]
runtime-tokio-rustls = [
"sea-orm/runtime-tokio-rustls",
"tokio/rt-multi-thread",
"tokio/fs",
]
security = [
"audit",
"permission-engine",
]
sharding = [
"twox-hash",
"chrono",
"futures",
]
sql-parser = [
"sqlparser",
"cache",
"once_cell",
"regex",
"unicode-normalization",
]
sqlite = [
"sea-orm/sqlx-sqlite",
"sea-orm/macros",
]
test-utils = [
"tempfile",
"assert_cmd",
]
tracing = [
"dep:tracing",
"dep:tracing-opentelemetry",
"dep:tracing-subscriber",
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
]
validation = [
"validator",
"with-time",
]
with-chrono = [
"sea-orm/with-chrono",
"chrono",
]
with-json = ["sea-orm/with-json"]
with-time = ["sea-orm/with-time"]
with-uuid = [
"sea-orm/with-uuid",
"uuid",
]
yaml = ["serde_yaml_ng"]
[lib]
name = "dbnexus"
path = "src/lib.rs"
[[test]]
name = "advanced_rbac_unit_tests"
path = "tests/permission/unit/advanced_rbac_unit_tests.rs"
required-features = ["permission"]
[[test]]
name = "audit_integration"
path = "tests/audit/integration/audit_integration.rs"
required-features = ["audit"]
[[test]]
name = "audit_unit_tests"
path = "tests/audit/unit/audit_unit_tests.rs"
required-features = ["audit"]
[[test]]
name = "authentication_integration"
path = "tests/authentication/integration_tests.rs"
required-features = ["authentication"]
[[test]]
name = "cache_integration"
path = "tests/cache/integration/cache_integration.rs"
required-features = ["cache"]
[[test]]
name = "config_integration"
path = "tests/core/integration/config_integration.rs"
required-features = ["sqlite"]
[[test]]
name = "core_common_types_tests"
path = "tests/core/unit/common_types_tests.rs"
[[test]]
name = "core_config_unit_tests"
path = "tests/core/unit/config_unit_tests.rs"
[[test]]
name = "core_entity_integration"
path = "tests/core/integration/entity_integration.rs"
required-features = [
"macros",
"sqlite",
]
[[test]]
name = "core_permission_integration"
path = "tests/core/integration/permission_integration.rs"
required-features = [
"permission",
"cache",
"test-utils",
"permission-engine",
]
[[test]]
name = "core_session_transaction"
path = "tests/core/integration/session_transaction.rs"
required-features = ["permission"]
[[test]]
name = "core_sql_parser_integration"
path = "tests/core/integration/sql_parser_integration.rs"
required-features = [
"sql-parser",
"permission",
]
[[test]]
name = "cross_cutting_benchmarks"
path = "tests/cross_cutting/benchmarks/bench.rs"
required-features = ["permission"]
[[test]]
name = "cross_cutting_cli"
path = "tests/cross_cutting/cli/cli_integration.rs"
required-features = ["cli-tests"]
[[test]]
name = "cross_cutting_concurrency"
path = "tests/cross_cutting/integration/concurrency.rs"
required-features = ["permission"]
[[test]]
name = "cross_cutting_multi_db"
path = "tests/cross_cutting/integration/multi_db.rs"
required-features = ["migration"]
[[test]]
name = "dbnexus_integration"
path = "tests/core/integration/dbnexus_integration.rs"
required-features = ["sqlite"]
[[test]]
name = "domain_permission_tests"
path = "tests/domain/permission_test.rs"
required-features = ["permission"]
[[test]]
name = "duckdb_pool_tests"
path = "tests/pool/unit/duckdb_pool_tests.rs"
required-features = ["duckdb"]
[[test]]
name = "edge_cases"
path = "tests/core/unit/edge_cases.rs"
required-features = [
"sql-parser",
"cache",
"metrics",
"permission",
"permission-engine",
]
[[test]]
name = "entity_unit_tests"
path = "tests/entity/unit/entity_unit_tests.rs"
required-features = [
"sqlite",
"macros",
"with-chrono",
]
[[test]]
name = "error_unit_tests"
path = "tests/core/unit/error_unit_tests.rs"
[[test]]
name = "global_index_integration"
path = "tests/global_index/integration/global_index_integration.rs"
required-features = [
"global-index",
"sqlite",
]
[[test]]
name = "global_index_unit_tests"
path = "tests/global_index/unit/global_index_unit_tests.rs"
required-features = ["global-index"]
[[test]]
name = "health_integration"
path = "tests/core/integration/health_integration.rs"
required-features = [
"health-check",
"sqlite",
]
[[test]]
name = "health_unit_tests"
path = "tests/health/unit/health_unit_tests.rs"
required-features = ["health-check"]
[[test]]
name = "kit_integration_tests"
path = "tests/kit/kit_integration_tests.rs"
[[test]]
name = "metrics_integration"
path = "tests/metrics/integration/metrics_integration.rs"
required-features = ["metrics"]
[[test]]
name = "metrics_unit_tests"
path = "tests/metrics/unit/metrics_unit_tests.rs"
required-features = ["metrics"]
[[test]]
name = "migration_auto_migrate"
path = "tests/migration/integration/auto_migrate.rs"
required-features = ["auto-migrate"]
[[test]]
name = "migration_hooks"
path = "tests/migration/integration/hooks_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
]
[[test]]
name = "migration_integration"
path = "tests/migration/integration/integration.rs"
required-features = [
"migration",
"auto-migrate",
]
[[test]]
name = "migration_query_builder"
path = "tests/migration/integration/query_builder_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
]
[[test]]
name = "migration_schema_macro"
path = "tests/migration/integration/schema_macro_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
]
[[test]]
name = "migration_soft_delete"
path = "tests/migration/integration/soft_delete_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
]
[[test]]
name = "migration_timestamps"
path = "tests/migration/integration/timestamps_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
]
[[test]]
name = "migration_unit_tests"
path = "tests/migration/unit/migration_unit_tests.rs"
required-features = ["migration"]
[[test]]
name = "migration_validation"
path = "tests/migration/integration/validation_test.rs"
required-features = [
"macros",
"migration",
"sqlite",
"validation",
]
[[test]]
name = "mod"
path = "tests/mod.rs"
required-features = [
"sqlite",
"test-utils",
"futures",
]
[[test]]
name = "mysql_testcontainers"
path = "tests/mysql_testcontainers.rs"
required-features = ["mysql"]
[[test]]
name = "pdp_unit_tests"
path = "tests/permission/unit/pdp_unit_tests.rs"
required-features = [
"permission",
"permission-engine",
]
[[test]]
name = "permission_cache_ttl_tests"
path = "tests/permission/unit/permission_cache_ttl_tests.rs"
required-features = [
"permission",
"cache",
]
[[test]]
name = "permission_engine_integration"
path = "tests/permission/integration/permission_engine_integration.rs"
required-features = [
"permission-engine",
"test-utils",
]
[[test]]
name = "pool_db_pool_unit_tests"
path = "tests/pool/unit/db_pool_unit_tests.rs"
required-features = [
"sqlite",
"permission",
"pool-warmup",
]
[[test]]
name = "pool_integration"
path = "tests/pool/integration/pool_integration.rs"
required-features = ["sqlite"]
[[test]]
name = "pool_semaphore_test"
path = "tests/pool_semaphore_test.rs"
required-features = [
"sqlite",
"futures",
]
[[test]]
name = "pool_session_unit_tests"
path = "tests/pool/unit/session_unit_tests.rs"
required-features = [
"sqlite",
"permission",
"sql-parser",
]
[[test]]
name = "pool_unit_tests"
path = "tests/pool/unit/pool_unit_tests.rs"
required-features = ["sqlite"]
[[test]]
name = "postgres_testcontainers"
path = "tests/postgres_testcontainers.rs"
required-features = ["postgres"]
[[test]]
name = "rate_limiter_unit_tests"
path = "tests/permission/unit/rate_limiter_unit_tests.rs"
required-features = ["permission"]
[[test]]
name = "rbac_unit_tests"
path = "tests/permission/unit/rbac_unit_tests.rs"
required-features = ["permission"]
[[test]]
name = "sea_orm_type_tests"
path = "tests/entity/unit/sea_orm_type_tests.rs"
required-features = [
"sqlite",
"macros",
"permission",
"with-chrono",
"with-uuid",
]
[[test]]
name = "security_unit_tests"
path = "tests/security/unit/sql_injection_tests.rs"
required-features = ["sql-parser"]
[[test]]
name = "sensitive_masker_tests"
path = "tests/security/sensitive_masker_tests.rs"
[[test]]
name = "shard_session_routing_tests"
path = "tests/sharding/integration/shard_session_routing_tests.rs"
required-features = [
"sharding",
"permission",
]
[[test]]
name = "sharding_integration"
path = "tests/sharding/integration/sharding_integration.rs"
required-features = ["sharding"]
[[test]]
name = "sharding_unit_tests"
path = "tests/sharding/unit/sharding_unit_tests.rs"
required-features = ["sharding"]
[[test]]
name = "tracing_integration"
path = "tests/tracing/integration/tracing_integration.rs"
required-features = [
"tracing",
"sqlite",
"permission",
]
[[test]]
name = "tracing_unit_tests"
path = "tests/tracing/unit/tracing_unit_tests.rs"
required-features = ["tracing"]
[[bench]]
name = "metrics_bench"
path = "benches/metrics_bench.rs"
harness = false
required-features = ["metrics"]
[[bench]]
name = "permission_bench"
path = "benches/permission_bench.rs"
harness = false
[[bench]]
name = "permission_engine_bench"
path = "benches/permission_engine_bench.rs"
harness = false
required-features = ["permission"]
[[bench]]
name = "sharding_bench"
path = "benches/sharding_bench.rs"
harness = false
required-features = ["sharding"]
[dependencies.anyhow]
version = "1.0"
[dependencies.assert_cmd]
version = "2.2"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.bcrypt]
version = "~0.19"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
optional = true
[dependencies.criterion]
version = "0.8"
optional = true
[dependencies.dashmap]
version = "~6.2"
optional = true
[dependencies.dbnexus-macros]
version = "=0.3.1"
optional = true
[dependencies.duckdb]
version = "1.1"
features = ["bundled"]
optional = true
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.jsonwebtoken]
version = "~10.4"
features = ["rust_crypto"]
optional = true
[dependencies.once_cell]
version = "1.21"
optional = true
[dependencies.opentelemetry]
version = "0.32"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.32"
features = ["grpc-tonic"]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.32"
optional = true
[dependencies.oxcache]
version = "0.3"
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.regex]
version = "1.0"
optional = true
[dependencies.sea-orm]
version = "2.0.0-rc.42"
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml_ng]
version = "0.10"
optional = true
[dependencies.sqlparser]
version = "0.62"
optional = true
[dependencies.tempfile]
version = "3.27"
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.time]
version = "0.3"
features = [
"formatting",
"parsing",
]
[dependencies.tokio]
version = "1.52"
features = [
"rt-multi-thread",
"macros",
"time",
"sync",
"fs",
]
default-features = false
[dependencies.toml]
version = "1.1"
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-opentelemetry]
version = "0.33"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
optional = true
[dependencies.trait-kit]
version = "0.1"
[dependencies.twox-hash]
version = "2.1"
optional = true
[dependencies.unicode-normalization]
version = "0.1"
optional = true
[dependencies.url]
version = "2.5"
[dependencies.uuid]
version = "1.23"
features = ["v4"]
optional = true
[dependencies.validator]
version = "0.20"
features = ["derive"]
optional = true
[dev-dependencies.assert_cmd]
version = "2.2"
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.predicates]
version = "3.1"
[dev-dependencies.tempfile]
version = "3.27"
[dev-dependencies.testcontainers]
version = "0.27"
[lints.clippy]
duplicate_mod = "allow"
[lints.rust]