airlab_lib/model/
error.rs

1use crate::model::store;
2use crate::pwd;
3use derive_more::From;
4use serde::Serialize;
5use serde_with::{DisplayFromStr, serde_as};
6
7pub type Result<T> = core::result::Result<T, Error>;
8
9#[serde_as]
10#[derive(Debug, Serialize, From)]
11pub enum Error {
12    EntityNotFound {
13        entity: &'static str,
14        id: i32,
15    },
16    ListLimitOverMax {
17        max: i64,
18        actual: i64,
19    },
20
21    // -- Modules
22    #[from]
23    Pwd(pwd::Error),
24    #[from]
25    Store(store::Error),
26
27    // -- Externals
28    #[from]
29    Sqlx(#[serde_as(as = "DisplayFromStr")] sqlx::Error),
30    #[from]
31    SeaQuery(#[serde_as(as = "DisplayFromStr")] sea_query::error::Error),
32    #[from]
33    ModqlIntoSea(#[serde_as(as = "DisplayFromStr")] modql::filter::IntoSeaError),
34}
35
36impl core::fmt::Display for Error {
37    fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error> {
38        write!(fmt, "{self:?}")
39    }
40}
41
42impl std::error::Error for Error {}