1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum QdbError {
8 #[error("Key not found: {0}")]
10 KeyNotFound(String),
11
12 #[error("Key already exists: {0}")]
14 KeyExists(String),
15
16 #[error("Invalid key format: {0}")]
18 InvalidKey(String),
19
20 #[error("Value error: {0}")]
22 ValueError(String),
23
24 #[error("QFT error: {0}")]
26 QftError(#[from] qft::QftError),
27
28 #[error("I/O error: {0}")]
30 IoError(#[from] std::io::Error),
31
32 #[error("Serialization error: {0}")]
34 SerializationError(String),
35
36 #[error("Transaction error: {0}")]
38 TransactionError(String),
39
40 #[error("Query error: {0}")]
42 QueryError(String),
43
44 #[error("Backend error: {0}")]
46 BackendError(String),
47
48 #[error("Checksum mismatch for key: {0}")]
50 ChecksumMismatch(String),
51
52 #[error("Golay error correction failed")]
54 GolayDecodeFailed,
55
56 #[error("Database is read-only")]
58 ReadOnly,
59
60 #[error("Database is closed")]
62 Closed,
63
64 #[error("Concurrent modification detected for key: {0}")]
66 ConcurrentModification(String),
67
68 #[error("Index error: {0}")]
70 IndexError(String),
71
72 #[error("Capacity exceeded: {0}")]
74 CapacityExceeded(String),
75
76 #[error("Invalid input: {0}")]
78 InvalidInput(String),
79
80 #[error("Vector store error: {0}")]
82 VectorError(String),
83}
84
85pub type Result<T> = std::result::Result<T, QdbError>;
87
88impl From<serde_json::Error> for QdbError {
89 fn from(e: serde_json::Error) -> Self {
90 QdbError::SerializationError(e.to_string())
91 }
92}