pub mod ast;
pub mod compilers;
pub mod error;
pub mod parsers;
pub mod validate;
pub use ast::{GqlQuery, ReturnItem};
pub use compilers::sql::{compile, CompileOptions, CompiledQuery};
pub use error::QueryError;
pub use validate::{validate, validate_with_warnings, MAX_DEPTH};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum QueryLanguage {
Gql,
Sparql,
}
pub fn parse(language: QueryLanguage, input: &str) -> Result<GqlQuery, QueryError> {
match language {
QueryLanguage::Gql => parsers::gql::parse(input),
QueryLanguage::Sparql => parsers::sparql::parse(input),
}
}
pub fn parse_auto(input: &str) -> Result<GqlQuery, QueryError> {
let trimmed = input.trim();
if trimmed.len() >= 6 && trimmed[..6].eq_ignore_ascii_case("SELECT") {
parsers::sparql::parse(trimmed)
} else {
parsers::gql::parse(trimmed)
}
}