use crate::analyzer::*;
use crate::ast::*;
pub fn get_table_refs(table_ident: &TableIdent, analyzed_indexer: &AnalyzedIndexer) -> TableRef {
let mut ref_to_blocks = vec![];
let mut ref_by_blocks = vec![];
let mut ref_self_blocks = vec![];
let eq = |table_ident: &TableIdent, ref_ident: &RefIdent| {
table_ident.schema.clone().map(|s| s.to_string) == ref_ident.schema.clone().map(|s| s.to_string)
&& table_ident.name.to_string == ref_ident.table.to_string
};
for ref_block in analyzed_indexer.indexed_refs.iter() {
let lhs_ident = analyzed_indexer.indexer.resolve_ref_alias(&ref_block.lhs);
let rhs_ident = analyzed_indexer.indexer.resolve_ref_alias(&ref_block.rhs);
if eq(table_ident, &lhs_ident) && eq(table_ident, &rhs_ident) {
ref_self_blocks.push(ref_block.clone())
} else if eq(table_ident, &lhs_ident) {
ref_to_blocks.push(ref_block.clone())
} else if eq(table_ident, &rhs_ident) {
ref_by_blocks.push(ref_block.clone())
}
}
TableRef {
ref_to: ref_to_blocks,
ref_by: ref_by_blocks,
ref_self: ref_self_blocks,
}
}