* feat: Introducing feature "sqlx-error" Purpose of this feature is to not convert errors given from sqlx into strings to ease further analysis of the error and react to it accordingly. This implementation uses a feature switch and an additional error kind to avoid interfering with existing implementations without this feature enabled. See discussion https://github.com/SeaQL/sea-orm/discussions/709 * fix: Align feature "sqlx-error" with merged Migration error kind Due to the merge, an other error kind had been introduced and the DbErr became Eq and Clone, however Eq cannot easily be derived from, so I went back to PartialEq, and since the sqlx error does not implement clone, this was converted into an Arc, to allow cloning of the new kind too. * fix: Repairing failing jobs Several jobs had failed as I missed to correct the return values of a few methods in transaction.rs and had a wrong understanding of map_err at that point. * feat: realigning with latest changes in sea-orm, different approach Instead of the former approach to introduce a new error kind, now the existing error types get extended, for now only Exec and Query, because these are the most relevant for the requirement context. Afterwards it might still be possible to add some further detail information. See discussion https://github.com/SeaQL/sea-orm/discussions/709 * Update src/driver/sqlx_mysql.rs Integrating fixes done by @Sculas Co-authored-by: Sculas <contact@sculas.xyz> * Update src/driver/sqlx_postgres.rs Integrating fixes done by @Sculas Co-authored-by: Sculas <contact@sculas.xyz> * Update src/driver/sqlx_sqlite.rs Integrating fixes done by @Sculas Co-authored-by: Sculas <contact@sculas.xyz> * feat: reworking feature with thiserror Following the latest suggestions I changed the implementation to utilize `thiserror`. Now there are more error kinds to be able to see the different kinds directly in src/error.rs To ensure the behaviour is as expected, I also introduce a further test, which checks for a uniqueness failure. Co-authored-by: Sculas <contact@sculas.xyz>
17 lines
455 B
Rust
17 lines
455 B
Rust
use crate::DbErr;
|
|
|
|
/// Converts an [sqlx::error] execution error to a [DbErr]
|
|
pub fn sqlx_error_to_exec_err(err: sqlx::Error) -> DbErr {
|
|
DbErr::ExecSqlX(err)
|
|
}
|
|
|
|
/// Converts an [sqlx::error] query error to a [DbErr]
|
|
pub fn sqlx_error_to_query_err(err: sqlx::Error) -> DbErr {
|
|
DbErr::QuerySqlX(err)
|
|
}
|
|
|
|
/// Converts an [sqlx::error] connection error to a [DbErr]
|
|
pub fn sqlx_error_to_conn_err(err: sqlx::Error) -> DbErr {
|
|
DbErr::ConnSqlX(err)
|
|
}
|