postgrest_query_parser/
error.rs

1use crate::lexer::SpanType;
2use std::ops::Range;
3
4#[derive(thiserror::Error, Debug, PartialEq)]
5#[non_exhaustive]
6pub enum Error {
7    #[error("Expected {expected:?}, found {found:?}")]
8    InvalidToken {
9        expected: SpanType,
10        found: SpanType,
11        range: Range<usize>,
12    },
13    #[error("Reached unexpected end of input")]
14    UnexpectedEnd,
15    #[error("Encountered unclosed bracket")]
16    UnclosedBracket { range: Range<usize> },
17    #[error("Trailing comma found")]
18    TrailingComma { range: Range<usize> },
19    #[error("No fields specified")]
20    MissingFields { range: Range<usize> },
21    #[error("Invalid nested fields")]
22    InvalidNesting { range: Range<usize> },
23    #[error("Invalid order direction found: {found:?}")]
24    InvalidOrderDirection { found: String, range: Range<usize> },
25    #[error("Invalid integer found: {found:?}")]
26    InvalidInteger { found: String, range: Range<usize> },
27    #[error("Operator not implemented (yet), operator: {found:?}")]
28    OperatorNotImplemented { found: String, range: Range<usize> },
29    #[error("Invalid not order, not should come before the operator")]
30    InvalidNotOrdering { range: Range<usize> },
31}
32
33impl Error {
34    #[must_use]
35    pub fn invalid_token(expected: SpanType, found: SpanType, range: Range<usize>) -> Error {
36        Error::InvalidToken {
37            expected,
38            found,
39            range,
40        }
41    }
42}