db_core/errors.rs
1// Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
2// SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
3//
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6//! represents all the ways a trait can fail using this crate
7use std::error::Error as StdError;
8
9//use derive_more::{error, Error as DeriveError};
10use thiserror::Error;
11
12/// Error data structure grouping various error subtypes
13#[derive(Debug, Error)]
14pub enum DBError {
15 /// errors that are specific to a database implementation
16 #[error("{0}")]
17 DBError(#[source] BoxDynError),
18 /// Username is taken
19 #[error("Username is taken")]
20 UsernameTaken,
21 /// Email is taken
22 #[error("Email is taken")]
23 EmailTaken,
24 /// Secret is taken
25 #[error("Secret is taken")]
26 SecretTaken,
27 /// Captcha key is taken
28 #[error("Captcha key is taken")]
29 CaptchaKeyTaken,
30 /// Account not found
31 #[error("Account not found")]
32 AccountNotFound,
33
34 /// Captcha not found
35 #[error("Captcha not found")]
36 CaptchaNotFound,
37 /// Traffic pattern not found
38 #[error("Traffic pattern not found")]
39 TrafficPatternNotFound,
40
41 /// Notification not found
42 #[error("Notification not found")]
43 NotificationNotFound,
44}
45
46/// Convenience type alias for grouping driver-specific errors
47pub type BoxDynError = Box<dyn StdError + 'static + Send + Sync>;
48
49/// Generic result data structure
50pub type DBResult<V> = std::result::Result<V, DBError>;