toql_core/join/
tree_merge.rs

1use super::Join;
2use crate::{
3    error::ToqlError, query::field_path::FieldPath, sql_builder::select_stream::SelectStream,
4    tree::tree_merge::TreeMerge,
5};
6use std::collections::HashMap;
7
8impl<T, R, E> TreeMerge<R, E> for Join<T>
9where
10    T: crate::keyed::Keyed + TreeMerge<R, E>,
11    E: std::convert::From<ToqlError>,
12{
13    fn merge<'a, I>(
14        &mut self,
15        descendents: I,
16        field: &str,
17        rows: &[R],
18        row_offset: usize,
19        index: &HashMap<u64, Vec<usize>>,
20        selection_stream: &SelectStream,
21    ) -> Result<(), E>
22    where
23        I: Iterator<Item = FieldPath<'a>> + Clone,
24    {
25        match self {
26            Join::Key(_) => Ok(()),
27            Join::Entity(e) => e.merge(
28                descendents,
29                field,
30                rows,
31                row_offset,
32                index,
33                selection_stream,
34            ),
35        }
36    }
37}