Skip to main content

alun_db/
lib.rs

1//! Alun database: Row 模式 + 事务 RAII + Hook + SQL 模板
2//!
3//! 设计理念:
4//!
5//! 1. **Db + Row 模式** —— 无 Model 也可操作,字段追踪 + 类型安全
6//! 2. **事务隐式提交** —— Rust 用 `?` 天然保证永不"忘记回滚"
7//! 3. **Hook 生命周期** —— before/after 拦截 CRUD,支持审计/时间戳自动填充
8//! 4. **配置驱动** —— 从 AppConfig 创建连接池,支持加密密码存储
9//! 5. **多数据库支持** —— PostgreSQL / MySQL / SQLite,工厂按 type 自动选择
10
11pub mod db;
12pub mod row;
13pub mod tx;
14pub mod hook;
15pub mod sql;
16pub mod dialect;
17pub mod factory;
18pub mod migrate;
19pub mod idkind;
20
21pub use db::Db;
22pub use alun_core::PageQuery;
23pub use row::Row;
24pub use tx::{ActiveTx, Isolation};
25pub use hook::{Hook, HookChain, NullHook};
26pub use sql::{SqlTemplate, SqlPara};
27pub use dialect::Dialect;
28pub use factory::{create_db, create_db_if_enabled};
29pub use idkind::IdKind;
30
31/// alun-db 错误
32#[derive(Debug, thiserror::Error)]
33pub enum DbError {
34    #[error("数据库错误: {0}")]
35    Sqlx(#[from] sqlx::Error),
36
37    #[error("序列化错误: {0}")]
38    Serde(#[from] serde_json::Error),
39
40    #[error("参数错误: {0}")]
41    Argument(String),
42
43    #[error("事务回滚: {0}")]
44    Rollback(String),
45
46    #[error("{0}")]
47    Other(String),
48}
49
50pub type DbResult<T> = Result<T, DbError>;