pub mod adapters;
pub mod ast;
pub mod context;
pub mod engine;
pub mod errors;
#[cfg(feature = "json")]
pub mod json;
pub mod lexer;
pub mod parser;
pub mod plan;
pub mod planner;
pub mod regex_dialect;
pub mod semantics;
pub mod value;
pub use adapters::IndexedCollection;
#[cfg(feature = "sqlite")]
pub use adapters::SqliteTable;
pub use ast::{
BinaryOp, Consumer, CountCmp, Expr, Follow, LogicalOp, OpNode, OrderSpec, Query, RelOp,
SelectItem, Subquery, UnaryOp, Where,
};
pub const LANGUAGE_VERSION: &str = "0.13";
pub use context::{DataContext, DefaultContext};
pub use engine::{Engine, InMemoryEngine, OqxResult, run_query};
pub use errors::{OqxError, Result, Stage};
pub use lexer::{TokType, Token, lex_string, lex_template, raw_source};
pub use parser::{parse_string, parse_template};
pub use plan::{
Equality, ROWS_ROOT, as_equality, const_value, is_const, partition_pushable, residual_query,
};
pub use planner::{Plan, PlannedEngine, QueryPlanner};
pub use regex_dialect::{CompiledRegex, RegexDialect, RegexFlags, compile_regex};
pub use value::{Object, Range, Value};
pub fn execute(source: &str, roots: Object) -> Result<Value> {
let query = parser::parse_string(source)?;
Ok(run_query(&query, &[], roots)?.into_value())
}