use serde::Serialize; #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct SourceRange { pub line_start: usize, pub line_end: usize, pub column_start: usize, pub column_end: usize, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParsedProcedure { pub name: String, pub export: bool, pub is_function: bool, pub parameters: Vec, pub source_range: SourceRange, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParsedCall { pub caller: String, pub callee: String, pub source_range: SourceRange, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParsedQuery { pub owner_procedure: String, pub query_text: String, pub tables: Vec, pub source_range: SourceRange, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParsedWrite { pub owner_procedure: String, pub target: String, pub write_type: String, pub source_range: SourceRange, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParseDiagnostic { pub code: String, pub message: String, pub severity: String, pub source_range: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ParsedSemanticUnit { pub source_path: String, pub procedures: Vec, pub calls: Vec, pub queries: Vec, pub writes: Vec, pub diagnostics: Vec, }