gluesql_parquet_storage/
error.rs1use {gluesql_core::prelude::Error, thiserror::Error};
2
3pub trait ResultExt<T, E: ToString> {
4 fn map_storage_err(self) -> Result<T, Error>;
10}
11
12impl<T, E: ToString> ResultExt<T, E> for std::result::Result<T, E> {
13 fn map_storage_err(self) -> Result<T, Error> {
14 self.map_err(|e| e.to_string()).map_err(Error::StorageMsg)
15 }
16}
17
18pub trait OptionExt<T, E: ToString> {
19 fn map_storage_err(self, error: E) -> Result<T, Error>;
25}
26
27impl<T, E: ToString> OptionExt<T, E> for std::option::Option<T> {
28 fn map_storage_err(self, error: E) -> Result<T, Error> {
29 self.ok_or_else(|| error.to_string())
30 .map_err(Error::StorageMsg)
31 }
32}
33
34impl From<ParquetStorageError> for Error {
35 fn from(error: ParquetStorageError) -> Self {
36 Self::StorageMsg(error.to_string())
37 }
38}
39
40#[derive(Error, Debug)]
41pub enum ParquetStorageError {
42 #[error("file not found")]
43 FileNotFound,
44
45 #[error("table {0} does not exist")]
46 TableDoesNotExist(String),
47
48 #[error("Unexpected key type for map: received {0}, expected String")]
49 UnexpectedKeyTypeForMap(String),
50
51 #[error("Unreachable gluesql value type for parquet writer")]
52 UnreachableGlueSqlValueTypeForParquetWriter,
53}