Expand description
ModKit Database abstraction crate.
This crate provides a unified interface for working with different databases
(SQLite, PostgreSQL, MySQL) through SQLx, with optional SeaORM integration.
It emphasizes typed connection options over DSN string manipulation and
implements strict security controls (e.g., SQLite PRAGMA whitelist).
§Features
pg,mysql,sqlite: enableSQLxbackendssea-orm: addSeaORMintegration for type-safe operations
§New Architecture
The crate now supports:
- Typed
DbConnectOptionsusing sqlxConnectOptions(no DSN string building) - Per-module database factories with configuration merging
SQLitePRAGMA whitelist for security- Environment variable expansion in passwords and DSNs
§Example (DbManager API)
use modkit_db::{DbManager, GlobalDatabaseConfig, DbConnConfig};
use figment::{Figment, providers::Serialized};
use std::path::PathBuf;
use std::sync::Arc;
// Create configuration using Figment
let figment = Figment::new()
.merge(Serialized::defaults(serde_json::json!({
"db": {
"servers": {
"main": {
"host": "localhost",
"port": 5432,
"user": "app",
"password": "${DB_PASSWORD}",
"dbname": "app_db"
}
}
},
"test_module": {
"database": {
"server": "main",
"dbname": "module_db"
}
}
})));
// Create DbManager
let home_dir = PathBuf::from("/app/data");
let db_manager = Arc::new(DbManager::from_figment(figment, home_dir).unwrap());
// Use in runtime with DbOptions::Manager(db_manager)
// Modules can then use: ctx.db_required_async().await?Re-exports§
pub use advisory_locks::DbLockGuard;pub use advisory_locks::LockConfig;pub use config::DbConnConfig;pub use config::GlobalDatabaseConfig;pub use config::PoolCfg;pub use manager::DbManager;pub use options::redact_credentials_in_dsn;pub use secure::Db;pub use secure::DbConn;pub use secure::DbTx;pub use sea_orm_migration;
Modules§
- advisory_
locks - Advisory locks implementation with namespacing and retry policies.
- config
- Database configuration types.
- manager
- Database manager for per-module database connections.
- migration_
runner - Migration runner for
ModKitmodules. - odata
ODataintegration forSeaORMwith security-scoped pagination.- options
- Database connection options and configuration types.
- secure
- Secure ORM layer for scoped database access.
Structs§
- Connect
Opts - Connection options. Extended to cover common sqlx pool knobs; each driver applies the subset it supports.
- DBProvider
- Thin, reusable DB entrypoint for application services.
Enums§
Functions§
- build_
db - Build a secure
Dbfrom config (noDbHandleexposure). - connect_
db - Connect and return a secure
Db(noDbHandleexposure).
Type Aliases§
- Result
- Library-local result type.