use nodedb_physical::physical_plan::query::JoinProjection;
pub struct CollectionSide<'a> {
pub collection: &'a str,
pub alias: Option<&'a str>,
}
pub struct JoinSpec<'a> {
pub on: &'a [(String, String)],
pub join_type: &'a str,
pub limit: usize,
pub projection: &'a [JoinProjection],
pub post_filters: &'a [u8],
}
impl JoinSpec<'_> {
pub(super) fn split_keys(&self) -> (Vec<String>, Vec<String>) {
let left = self.on.iter().map(|(l, _)| l.clone()).collect();
let right = self.on.iter().map(|(_, r)| r.clone()).collect();
(left, right)
}
pub(super) fn effective_limit(&self) -> usize {
if self.limit == 0 {
usize::MAX
} else {
self.limit
}
}
}