dm_database_parser_sqllog/
error.rs1use thiserror::Error;
10
11#[derive(Debug, Clone, PartialEq, Error)]
16pub enum ParseError {
17 #[error("invalid format | raw: {raw}")]
19 InvalidFormat {
20 raw: String,
22 },
23
24 #[error("file not found or inaccessible: {path}")]
26 FileNotFound {
27 path: String,
29 },
30
31 #[error("empty input: no lines provided")]
33 EmptyInput,
34
35 #[error("invalid record start line: line does not match expected format | raw: {raw}")]
37 InvalidRecordStartLine {
38 raw: String,
40 },
41
42 #[error("line too short: expected at least 25 characters, got {length} | raw: {raw}")]
44 LineTooShort {
45 length: usize,
47 raw: String,
49 },
50
51 #[error("missing closing parenthesis in meta section | raw: {raw}")]
53 MissingClosingParen {
54 raw: String,
56 },
57
58 #[error("insufficient meta fields: expected at least 5 fields, got {count} | raw: {raw}")]
60 InsufficientMetaFields {
61 count: usize,
63 raw: String,
65 },
66
67 #[error("invalid EP format: expected 'EP[number]', got '{value}' | raw: {raw}")]
69 InvalidEpFormat {
70 value: String,
72 raw: String,
74 },
75
76 #[error("failed to parse EP number: {value} | raw: {raw}")]
78 EpParseError {
79 value: String,
81 raw: String,
83 },
84
85 #[error("invalid field format: expected '{expected}', got '{actual}' | raw: {raw}")]
87 InvalidFieldFormat {
88 expected: String,
90 actual: String,
92 raw: String,
94 },
95
96 #[error("failed to parse {field} as integer: {value} | raw: {raw}")]
98 IntParseError {
99 field: String,
101 value: String,
103 raw: String,
105 },
106
107 #[error("failed to parse indicators: {reason} | raw: {raw}")]
109 IndicatorsParseError {
110 reason: String,
112 raw: String,
114 },
115
116 #[error("IO error: {0}")]
118 IoError(String),
119}