odatav4_parser/lib.rs
1//! OData V4 Query String Parser
2//!
3//! This library parses OData V4 query strings into an AST and renders them
4//! into multiple SQL dialects (MSSQL, SQLite, SurrealQL, PostgreSQL).
5//!
6//! # Example
7//!
8//! ```rust
9//! use odatav4_parser::ast::QueryOptions;
10//! use odatav4_parser::{parse, renderers};
11//! use odatav4_parser::renderers::{mssql, sqlite, surrealql, postgresql};
12//! use odatav4_parser::renderers::SqlRenderer; // Import the trait
13//!
14//! let query = "$select=id,name&$filter=age gt 18";
15//! let options = parse(query).unwrap();
16//!
17//! let mut mssql = mssql::MssqlRenderer::new();
18//! println!("MSSQL: {}", mssql.render("users", &options));
19//! // Output: SELECT id, name FROM users WHERE (age > 18)
20//!
21//! let mut sqlite = sqlite::SqliteRenderer::new();
22//! println!("SQLite: {}", sqlite.render("users", &options));
23//!
24//! let mut surrealql = surrealql::SurrealqlRenderer::new();
25//! println!("SurrealQL: {}", surrealql.render("users", &options));
26//!
27//! let mut postgresql = postgresql::PostgresqlRenderer::new();
28//! println!("PostgreSQL: {}", postgresql.render("users", &options));
29//! ```
30
31pub mod ast;
32pub mod error;
33pub mod lexer;
34pub mod parser;
35pub mod renderers;
36
37// Re-export main API
38pub use ast::QueryOptions;
39pub use error::{ODataError, Result};
40pub use parser::parse;