use crate::parser::{analyzer::{AnalysisContext, AnalyzerError, PredicateResolver}, ast::{Join, Query}};
pub struct JoinResolver;
impl JoinResolver {
pub fn qualify_and_fold_joins(q: &Query, ctx: &mut AnalysisContext) -> Result<Vec<Join>, AnalyzerError> {
let mut out = Vec::with_capacity(q.joins.len());
for j in &q.joins {
let qp = PredicateResolver::qualify_predicate(&j.predicate, ctx)?;
let fp = PredicateResolver::fold_predicate(&qp);
out.push(Join {
join_type: j.join_type.clone(),
collection: j.collection.clone(), predicate: fp,
});
}
Ok(out)
}
}