uorm 0.8.1

Rust 下的轻量级 ORM 框架,借鉴了 Java MyBatis 的设计理念,强调 SQL 与业务逻辑分离。它结合 Rust 的类型系统与宏机制,支持编写原生 SQL 并自动映射结果,兼容 async/await,兼顾性能与可控性。
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
pub enum DbError {
    #[error("Database Error: {0}")]
    DbError(String),
    #[error("Invalid Database Url: {0}")]
    DbUrlError(String),
    #[error("Serialization Error: {0}")]
    SerializationError(String),
    #[error("Query Build Error: {0}")]
    QueryBuildError(String),
    #[error("Data Conversion Error: {0}")]
    DataConversionError(String),
    #[error("Mapper Load Error: {0}")]
    MapperLoadError(String),
    #[error("Driver Error: {0}")]
    DriverError(String),
    #[error("Template Engine Error: {0}")]
    TemplateEngineError(String),
    #[error("SQL Execution Error: {0}")]
    SqlExecutionError(String),
    #[error("Type Mismatch: {0}")]
    TypeMismatch(String),
    #[error("Missing Field: {0}")]
    MissingField(String),
    #[error("Custom Error: {0}")]
    Custom(String),
}

// Aliases for compatibility
pub type Error = DbError;
pub type SerdeError = DbError;

impl serde::ser::Error for DbError {
    fn custom<T: std::fmt::Display>(msg: T) -> Self {
        DbError::SerializationError(msg.to_string())
    }
}

impl serde::de::Error for DbError {
    fn custom<T: std::fmt::Display>(msg: T) -> Self {
        DbError::SerializationError(msg.to_string())
    }
}