1use thiserror::Error;
4
5#[derive(Error, Debug)]
6pub enum DbError {
7 #[error("Database error: {0}")]
8 Sqlx(#[from] sqlx::Error),
9
10 #[error("Not found: {0}")]
11 NotFound(String),
12
13 #[error("Duplicate: {0}")]
14 Duplicate(String),
15
16 #[error("Pool error: {0}")]
17 Pool(String),
18
19 #[error("Connection error: {0}")]
20 Connection(String),
21
22 #[error("Cache error: {0}")]
23 Cache(String),
24
25 #[error("Query error: {0}")]
26 Query(String),
27
28 #[error("Validation error: {0}")]
29 Validation(String),
30
31 #[error("{0}")]
32 Other(String),
33}
34
35impl From<crate::pool::PoolError> for DbError {
36 fn from(err: crate::pool::PoolError) -> Self {
37 DbError::Pool(err.to_string())
38 }
39}
40
41pub type Result<T> = std::result::Result<T, DbError>;