drk/
error.rs

1/* This file is part of DarkFi (https://dark.fi)
2 *
3 * Copyright (C) 2020-2025 Dyne.org foundation
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as
7 * published by the Free Software Foundation, either version 3 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
17 */
18
19/// Result type used in the wallet database module
20pub type WalletDbResult<T> = std::result::Result<T, WalletDbError>;
21
22/// Custom wallet database errors available for drk.
23/// Please sort them sensefully.
24#[derive(Debug)]
25pub enum WalletDbError {
26    // Initialization error
27    InitializationFailed = -32100,
28
29    // Connection related errors
30    ConnectionFailed = -32110,
31    FailedToAquireLock = -32111,
32
33    // Configuration related errors
34    PragmaUpdateError = -32120,
35
36    // Query execution related errors
37    QueryPreparationFailed = -32130,
38    QueryExecutionFailed = -32131,
39    QueryFinalizationFailed = -32132,
40    ParseColumnValueError = -32133,
41    RowNotFound = -32134,
42
43    // Generic error
44    GenericError = -32140,
45}
46
47impl std::fmt::Display for WalletDbError {
48    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
49        match self {
50            WalletDbError::InitializationFailed => write!(f, "WalletDbError::InitializationFailed"),
51            WalletDbError::ConnectionFailed => write!(f, "WalletDbError::ConnectionFailed"),
52            WalletDbError::FailedToAquireLock => write!(f, "WalletDbError::FailedToAquireLock"),
53            WalletDbError::PragmaUpdateError => write!(f, "WalletDbError::PragmaUpdateError"),
54            WalletDbError::QueryPreparationFailed => {
55                write!(f, "WalletDbError::QueryPreparationFailed")
56            }
57            WalletDbError::QueryExecutionFailed => write!(f, "WalletDbError::QueryExecutionFailed"),
58            WalletDbError::QueryFinalizationFailed => {
59                write!(f, "WalletDbError::QueryFinalizationFailed")
60            }
61            WalletDbError::ParseColumnValueError => {
62                write!(f, "WalletDbError::ParseColumnValueError")
63            }
64            WalletDbError::RowNotFound => write!(f, "WalletDbError::RowNotFound"),
65            WalletDbError::GenericError => write!(f, "WalletDbError::GenericError"),
66        }
67    }
68}
69
70impl std::error::Error for WalletDbError {}