1#[derive(Debug, thiserror::Error, Clone)]
5pub enum Error {
6 #[error("Connection Error: {0}")]
8 ConnectionError(String),
9 #[error("Schema Error: {0}")]
11 SchemaError(String),
12 #[cfg(feature = "migrations")]
14 #[error("{0}")]
15 MigrationError(#[from] MigrationError),
16
17 #[error("QueryBuilderError: {0} ({1})")]
19 QueryBuilderError(String, String),
20
21 #[error("ColumnNotFound: Table({0}) {1}")]
23 ColumnNotFound(String, String),
24
25 #[error("Column Skipped")]
27 ColumnSkipped,
28
29 #[error("No Rows Found - Query: '{query}'")]
31 NoRowsFound {
32 query: String,
34 },
35
36 #[cfg(feature = "pagination")]
38 #[error("Pagination Error: {0}")]
39 PaginationError(String),
40
41 #[error("Not Implemented")]
43 NotImplemented,
44
45 #[error("Error Hashing Password: {0}")]
47 HashingError(String),
48
49 #[error("Serde Error: {0}")]
51 SerdeError(String),
52
53 #[error("Unknown Variant {0}")]
55 UnknownVariant(String),
56
57 #[error("Unknown Error / Generic Error occurred")]
59 Unknown,
60
61 #[cfg(feature = "two-factor-auth")]
63 #[error("TOTP Error: {0}")]
64 TotpError(String),
65 #[error("SystemTime Error: {0}")]
67 SystemTimeError(#[from] std::time::SystemTimeError),
68
69 #[error("IO Error: {0}")]
71 IOError(String),
72
73 #[cfg(feature = "libsql")]
75 #[error(
76 "LibSQL Error: {error}\n -> {query}\nPlease report this error to the GeekORM developers"
77 )]
78 LibSQLError {
79 error: String,
81 query: String,
83 },
84
85 #[cfg(feature = "rusqlite")]
87 #[error("RuSQLite Error occurred: {0}")]
88 RuSQLiteError(String),
89
90 #[error(
92 "Query Syntax Error: {error}\n -> {query}\nPlease report this error to the GeekORM developers"
93 )]
94 QuerySyntaxError {
95 error: String,
97 query: String,
99 },
100}
101
102#[cfg(feature = "migrations")]
104#[derive(Debug, thiserror::Error, Clone)]
105pub enum MigrationError {
106 #[error("Missing Table `{0}`")]
108 MissingTable(String),
109 #[error("Missing Column `{table}.{column}`")]
111 MissingColumn {
112 table: String,
114 column: String,
116 },
117 #[error("Column Type Mismatch `{table}.{column}`: {feature}")]
119 ColumnTypeMismatch {
120 table: String,
122 column: String,
124 feature: String,
126 },
127
128 #[error("New Table `{table}`")]
130 NewTable {
131 table: String,
133 },
134 #[error("New Column `{table}.{column}`")]
136 NewColumn {
137 table: String,
139 column: String,
141 },
142
143 #[error("Upgrade Error: {0}")]
145 UpgradeError(String),
146 #[error("Missing Migration: {0}")]
148 MissingMigration(String),
149}
150
151impl From<std::io::Error> for Error {
152 fn from(e: std::io::Error) -> Self {
153 Self::IOError(e.to_string())
154 }
155}
156
157#[cfg(feature = "rusqlite")]
158impl From<::rusqlite::Error> for Error {
159 fn from(e: ::rusqlite::Error) -> Self {
160 Self::RuSQLiteError(e.to_string())
161 }
162}