dm_database_parser_sqllog/
error.rs

1//! 错误类型定义
2//!
3//! 定义了解析过程中可能出现的所有错误类型。
4//!
5//! # 用法说明
6//!
7//! ParseError 仅作为库 API 的错误返回类型,普通用户无需手动构造。
8
9use thiserror::Error;
10
11/// 解析错误类型
12///
13/// 包含了 SQL 日志解析过程中可能遇到的所有错误情况。
14/// 所有错误都包含原始输入数据以便于调试。
15#[derive(Debug, Clone, PartialEq, Error)]
16pub enum ParseError {
17    /// 通用的格式错误
18    #[error("invalid format | raw: {raw}")]
19    InvalidFormat {
20        /// 原始输入数据
21        raw: String,
22    },
23
24    /// 文件未找到或无法访问
25    #[error("file not found or inaccessible: {path}")]
26    FileNotFound {
27        /// 文件路径
28        path: String,
29    },
30
31    /// 无效的记录起始行
32    #[error("invalid record start line: line does not match expected format | raw: {raw}")]
33    InvalidRecordStartLine {
34        /// 原始行内容
35        raw: String,
36    },
37
38    /// 整数解析失败
39    #[error("failed to parse {field} as integer: {value} | raw: {raw}")]
40    IntParseError {
41        /// 字段名
42        field: String,
43        /// 字段值
44        value: String,
45        /// 原始内容
46        raw: String,
47    },
48
49    /// IO 操作错误
50    #[error("IO error: {0}")]
51    IoError(String),
52}