toql_core/join/
tree_merge.rs1use 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}