parse_record

Function parse_record 

Source
pub fn parse_record(lines: &[&str]) -> Result<Sqllog, ParseError>
Expand description

从行数组解析成 Sqllog 结构

这是主要的解析函数,将一行或多行文本解析为结构化的 Sqllog 对象。

§参数

  • lines - 包含日志记录的行(第一行必须是有效的起始行,后续行是继续行)

§返回

  • Ok(Sqllog) - 解析成功
  • Err(ParseError) - 解析失败,包含详细的错误信息

§错误

可能返回以下错误:

  • EmptyInput - 输入为空
  • InvalidRecordStartLine - 第一行不是有效的记录起始行
  • LineTooShort - 行长度不足
  • MissingClosingParen - 缺少右括号
  • InsufficientMetaFields - Meta 字段数量不足

§示例

use dm_database_parser_sqllog::parse_record;

let lines = vec!["2025-08-12 10:57:09.548 (EP[0] sess:123 thrd:456 user:alice trxid:789 stmt:999 appname:app) SELECT 1"];
let sqllog = parse_record(&lines).unwrap();

assert_eq!(sqllog.ts, "2025-08-12 10:57:09.548");
assert_eq!(sqllog.meta.username, "alice");
assert_eq!(sqllog.body, "SELECT 1");