1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use super::Join;
use crate::{
    error::ToqlError, query::field_path::FieldPath, sql_builder::select_stream::SelectStream,
    tree::tree_merge::TreeMerge,
};
use std::collections::HashMap;

impl<T, R, E> TreeMerge<R, E> for Join<T>
where
    T: crate::keyed::Keyed + TreeMerge<R, E>,
    E: std::convert::From<ToqlError>,
{
    fn merge<'a, I>(
        &mut self,
        descendents: I,
        field: &str,
        rows: &[R],
        row_offset: usize,
        index: &HashMap<u64, Vec<usize>>,
        selection_stream: &SelectStream,
    ) -> Result<(), E>
    where
        I: Iterator<Item = FieldPath<'a>> + Clone,
    {
        match self {
            Join::Key(_) => Ok(()),
            Join::Entity(e) => e.merge(
                descendents,
                field,
                rows,
                row_offset,
                index,
                selection_stream,
            ),
        }
    }
}