1pub type Result<T = ()> = std::result::Result<T, crate::Error>;
2
3#[derive(Debug, thiserror::Error)]
4pub enum Error {
5 #[error("Async error: {0}")]
7 Async(libpq::errors::Error),
8 #[cfg(feature = "chrono")]
10 #[error("{0}")]
11 Chrono(String),
12 #[cfg(feature = "config")]
14 #[error(transparent)]
15 Config(#[from] config::ConfigError),
16 #[error("{error}")]
18 Connect {
19 dsn: String,
20 error: libpq::errors::Error,
21 },
22 #[error("Copy error: {0}")]
24 Copy(libpq::errors::Error),
25 #[error("Unable to escape '{0}': {1}")]
27 Escape(String, libpq::errors::Error),
28 #[error("{0}")]
29 Environment(#[from] envir::Error),
30 #[error("Unable to convert from SQL {} (oid={}) to {rust_type}: {value}. Try {}", pg_type.name, pg_type.oid, crate::pq::sql_to_rust(pg_type))]
32 FromSql {
33 pg_type: crate::pq::Type,
34 rust_type: String,
35 value: String,
36 },
37 #[error("{0}")]
38 Infallible(#[from] std::convert::Infallible),
39 #[error("{0}")]
41 Inspect(String),
42 #[error(transparent)]
44 Io(#[from] std::io::Error),
45 #[cfg(feature = "jiff")]
47 #[error("{0}")]
48 Jiff(#[from] jiff::Error),
49 #[error("{0}")]
50 Libpq(#[from] libpq::errors::Error),
51 #[error("Missing field {0}")]
53 MissingField(String),
54 #[error("Mutex error: {0}")]
56 Mutex(String),
57 #[error("Try to retreive null field as non-option type")]
59 NotNull,
60 #[error("{0}")]
62 Parse(String),
63 #[error(transparent)]
65 ParseBoolError(#[from] std::str::ParseBoolError),
66 #[error(transparent)]
68 ParseIntError(#[from] std::num::ParseIntError),
69 #[error("Ping error: {0:?}")]
71 Ping(crate::connection::PingStatus),
72 #[error("Invalid primary key")]
74 PrimaryKey,
75 #[error("{}", .0.error_message().unwrap().unwrap_or_else(|| "Unknow SQL error".to_string()))]
77 Sql(crate::pq::Result),
78 #[error("Invalid convertion from {} to {rust_type}: {message}", .pg_type.name)]
80 ToSql {
81 pg_type: crate::pq::Type,
82 rust_type: String,
83 message: String,
84 },
85 #[error(transparent)]
87 TryFromIntError(#[from] std::num::TryFromIntError),
88 #[error(transparent)]
90 Utf8(#[from] std::string::FromUtf8Error),
91 #[cfg(feature = "xml")]
93 #[error(transparent)]
94 Xml(#[from] xmltree::Error),
95}