sq3_rs/
result.rs

1use std::array::TryFromSliceError;
2use std::error::Error as StdError;
3use std::fmt::Debug;
4use std::fmt::Display;
5use std::io::Error as StdioError;
6use std::num::{ParseFloatError, ParseIntError};
7use std::sync::MutexGuard;
8use std::sync::PoisonError;
9
10use sq3_parser::Sq3ParserError;
11
12use crate::io::SqliteRawIo;
13
14pub type SqliteResult<T> = Result<T, SqliteError>;
15
16#[derive(Debug)]
17pub enum SqliteError {
18    EmptyDb,
19    InvalidFileUriMode,
20    HeaderValidationError(String),
21    TryFromSliceError(TryFromSliceError),
22    ParseFloatError(ParseFloatError),
23    ParseIntError(ParseIntError),
24    StdioError(StdioError),
25    Custom(String),
26    ParsingField(FieldParsingError),
27    InvalidPayloadSize(InvalidPayloadSizeError),
28    SqlParser(Sq3ParserError),
29    SqliteIoMutexPoisonError,
30}
31
32impl From<Sq3ParserError> for SqliteError {
33    fn from(error: Sq3ParserError) -> Self {
34        Self::SqlParser(error)
35    }
36}
37
38impl From<PoisonError<MutexGuard<'_, (dyn SqliteRawIo + 'static)>>> for SqliteError {
39    fn from(_: PoisonError<MutexGuard<'_, (dyn SqliteRawIo + 'static)>>) -> Self {
40        Self::SqliteIoMutexPoisonError
41    }
42}
43#[derive(Debug)]
44pub struct FieldParsingError(pub String);
45
46#[derive(Debug)]
47pub struct InvalidPayloadSizeError(pub String);
48
49impl Display for SqliteError {
50    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
51        // TODO
52        write!(f, "{:?}", self)
53    }
54}
55
56impl From<TryFromSliceError> for SqliteError {
57    fn from(error: TryFromSliceError) -> Self {
58        Self::TryFromSliceError(error)
59    }
60}
61
62impl From<ParseFloatError> for SqliteError {
63    fn from(error: ParseFloatError) -> Self {
64        Self::ParseFloatError(error)
65    }
66}
67
68impl From<ParseIntError> for SqliteError {
69    fn from(error: ParseIntError) -> Self {
70        Self::ParseIntError(error)
71    }
72}
73
74impl StdError for SqliteError {}
75
76impl From<StdioError> for SqliteError {
77    fn from(io_error: StdioError) -> Self {
78        Self::StdioError(io_error)
79    }
80}