gluesql_core/
result.rs

1use {serde::Serialize, std::fmt::Debug, thiserror::Error as ThisError};
2
3pub use crate::{
4    ast_builder::AstBuilderError,
5    data::{
6        ConvertError, IntervalError, KeyError, LiteralError, RowError, SchemaParseError,
7        StringExtError, TableError, ValueError,
8    },
9    executor::{
10        AlterError, DeleteError, EvaluateError, ExecuteError, FetchError, InsertError, SelectError,
11        SortError, UpdateError, ValidateError,
12    },
13    plan::PlanError,
14    row_conversion::RowConversionError,
15    store::{AlterTableError, IndexError},
16    translate::TranslateError,
17};
18
19#[derive(ThisError, Serialize, Debug, PartialEq)]
20pub enum Error {
21    #[error("storage: {0}")]
22    StorageMsg(String),
23
24    #[error("parser: {0}")]
25    Parser(String),
26
27    #[error("translate: {0}")]
28    Translate(#[from] TranslateError),
29
30    #[error("ast-builder: {0}")]
31    AstBuilder(#[from] AstBuilderError),
32
33    #[error("alter-table: {0}")]
34    AlterTable(#[from] AlterTableError),
35    #[error("index: {0}")]
36    Index(#[from] IndexError),
37    #[error("execute: {0}")]
38    Execute(#[from] ExecuteError),
39    #[error("alter: {0}")]
40    Alter(Box<AlterError>),
41    #[error("fetch: {0}")]
42    Fetch(#[from] FetchError),
43    #[error("select: {0}")]
44    Select(#[from] SelectError),
45    #[error("evaluate: {0}")]
46    Evaluate(#[from] EvaluateError),
47    #[error("sort: {0}")]
48    Sort(#[from] SortError),
49    #[error("insert: {0}")]
50    Insert(#[from] InsertError),
51    #[error("update: {0}")]
52    Delete(#[from] DeleteError),
53    #[error("delete: {0}")]
54    Update(#[from] UpdateError),
55    #[error("table: {0}")]
56    Table(#[from] TableError),
57    #[error("validate: {0}")]
58    Validate(#[from] ValidateError),
59    #[error("row: {0}")]
60    Row(#[from] RowError),
61    #[error("key: {0}")]
62    Key(#[from] KeyError),
63    #[error("value: {0}")]
64    Value(Box<ValueError>),
65    #[error("convert: {0}")]
66    Convert(#[from] ConvertError),
67    #[error("literal: {0}")]
68    Literal(#[from] LiteralError),
69    #[error("interval: {0}")]
70    Interval(#[from] IntervalError),
71    #[error("string-ext: {0}")]
72    StringExt(#[from] StringExtError),
73    #[error("plan: {0}")]
74    Plan(#[from] PlanError),
75    #[error("schema-parse: {0}")]
76    Schema(#[from] SchemaParseError),
77
78    #[error("row-conversion: {0}")]
79    RowConversion(#[from] RowConversionError),
80}
81
82pub type Result<T, E = Error> = std::result::Result<T, E>;
83
84impl From<AlterError> for Error {
85    fn from(e: AlterError) -> Error {
86        Error::Alter(Box::new(e))
87    }
88}
89
90impl From<ValueError> for Error {
91    fn from(e: ValueError) -> Error {
92        Error::Value(Box::new(e))
93    }
94}