dm_database_parser_sqllog/
error.rs1use thiserror::Error;
6
7#[derive(Debug, Clone, PartialEq, Error)]
12pub enum ParseError {
13 #[error("invalid format | raw: {raw}")]
15 InvalidFormat {
16 raw: String,
18 },
19
20 #[error("file not found or inaccessible: {path}")]
22 FileNotFound {
23 path: String,
25 },
26
27 #[error("empty input: no lines provided")]
29 EmptyInput,
30
31 #[error("invalid record start line: line does not match expected format | raw: {raw}")]
33 InvalidRecordStartLine {
34 raw: String,
36 },
37
38 #[error("line too short: expected at least 25 characters, got {length} | raw: {raw}")]
40 LineTooShort {
41 length: usize,
43 raw: String,
45 },
46
47 #[error("missing closing parenthesis in meta section | raw: {raw}")]
49 MissingClosingParen {
50 raw: String,
52 },
53
54 #[error("insufficient meta fields: expected at least 5 fields, got {count} | raw: {raw}")]
56 InsufficientMetaFields {
57 count: usize,
59 raw: String,
61 },
62
63 #[error("invalid EP format: expected 'EP[number]', got '{value}' | raw: {raw}")]
65 InvalidEpFormat {
66 value: String,
68 raw: String,
70 },
71
72 #[error("failed to parse EP number: {value} | raw: {raw}")]
74 EpParseError {
75 value: String,
77 raw: String,
79 },
80
81 #[error("invalid field format: expected '{expected}', got '{actual}' | raw: {raw}")]
83 InvalidFieldFormat {
84 expected: String,
86 actual: String,
88 raw: String,
90 },
91
92 #[error("failed to parse {field} as integer: {value} | raw: {raw}")]
94 IntParseError {
95 field: String,
97 value: String,
99 raw: String,
101 },
102
103 #[error("failed to parse indicators: {reason} | raw: {raw}")]
105 IndicatorsParseError {
106 reason: String,
108 raw: String,
110 },
111}