postgrest_query_parser/
error.rs1use 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}