gluesql_core/data/interval/
error.rs1use {
2 super::Interval,
3 crate::ast::{Expr, ToSql},
4 chrono::NaiveTime,
5 serde::Serialize,
6 std::fmt::Debug,
7 thiserror::Error,
8};
9
10#[derive(Error, Serialize, Debug, PartialEq, Eq)]
11pub enum IntervalError {
12 #[error("unsupported interval range: {0} to {1}")]
13 UnsupportedRange(String, String),
14
15 #[error("cannot add between YEAR TO MONTH and HOUR TO SECOND")]
16 AddBetweenYearToMonthAndHourToSecond,
17
18 #[error("cannot subtract between YEAR TO MONTH and HOUR TO SECOND")]
19 SubtractBetweenYearToMonthAndHourToSecond,
20
21 #[error("cannot add year or month to TIME: {time} + {interval}", time = time.to_string(), interval = interval.to_sql_str())]
22 AddYearOrMonthToTime { time: NaiveTime, interval: Interval },
23
24 #[error("cannot subtract year or month to TIME: {time} - {interval}", time = time.to_string(), interval = interval.to_sql_str())]
25 SubtractYearOrMonthToTime { time: NaiveTime, interval: Interval },
26
27 #[error("failed to parse integer: {0}")]
28 FailedToParseInteger(String),
29
30 #[error("failed to parse decimal: {0}")]
31 FailedToParseDecimal(String),
32
33 #[error("failed to parse time: {0}")]
34 FailedToParseTime(String),
35
36 #[error("failed to parse YEAR TO MONTH (year-month, ex. 2-8): {0}")]
37 FailedToParseYearToMonth(String),
38
39 #[error("failed to parse DAY TO HOUR (day hour, ex. 1 23): {0}")]
40 FailedToParseDayToHour(String),
41
42 #[error("failed to parse DAY TO MINUTE (day hh:mm, ex. 1 12:34): {0}")]
43 FailedToParseDayToMinute(String),
44
45 #[error("failed to parse DAY TO SECOND (day hh:mm:ss, ex. 1 12:34:55): {0}")]
46 FailedToParseDayToSecond(String),
47
48 #[error("date overflow: {year}-{month}")]
49 DateOverflow { year: i32, month: i32 },
50
51 #[error("failed to get extract from interval")]
52 FailedToExtract,
53
54 #[error("parse supported only literal, expected: \"'1 1' DAY TO HOUR\", but got: {expr}", expr = expr.to_sql())]
55 ParseSupportedOnlyLiteral { expr: Box<Expr> },
56
57 #[error("unreachable")]
58 Unreachable,
59}