Skip to main content

influxlp_tools/
error.rs

1use thiserror::Error;
2
3pub(crate) type BoxError = Box<dyn std::error::Error + Send + Sync + 'static>;
4pub(crate) type Result<T> = std::result::Result<T, LineProtocolError>;
5
6#[derive(Debug, Error)]
7pub enum BuilderError {
8    #[error("measurement name cannot be empty")]
9    EmptyMeasurement,
10
11    #[error("measurement name cannot start with '_' (underscore)")]
12    InvalidMeasurement,
13
14    #[error("tag key cannot be empty")]
15    EmptyTagKey,
16
17    #[error("tag key cannot start with '_' (underscore)")]
18    InvalidTagKey,
19
20    #[error("tag value cannot be empty")]
21    EmptyTagValue,
22
23    #[error("key cannot be empty")]
24    EmptyFieldKey,
25
26    #[error("key cannot start with '_' (underscore)")]
27    InvalidFieldKey,
28
29    #[error("value cannot be empty")]
30    EmptyFieldValue,
31
32    #[error("atleast one field is required")]
33    MissingFields,
34}
35
36#[derive(Debug, Error)]
37pub enum ParseError {
38    #[error("line is a comment")]
39    CommentLine,
40
41    #[error("line cannot be empty")]
42    EmptyLine,
43
44    #[error("measurement name cannot be empty")]
45    MissingMeasurement,
46
47    #[error("atleast one field is required")]
48    MissingFields,
49
50    #[error("timestamp is not a valid number")]
51    InvalidTimestamp,
52
53    #[error("invalid set: {0}")]
54    InvalidSet(#[source] BoxError),
55}
56
57#[derive(Debug, Error)]
58pub enum LineProtocolError {
59    #[error("A builder error occured: {0}")]
60    BuilderError(#[from] BuilderError),
61
62    #[error("A parser error occured: {0}")]
63    ParserError(#[from] ParseError),
64}