diff --git a/src/data/repositories.rs b/src/data/repositories.rs index 30bd545..507f3e5 100644 --- a/src/data/repositories.rs +++ b/src/data/repositories.rs @@ -122,10 +122,10 @@ impl, D: DbLayer> Query { } } - pub fn load(&mut self, data_repository: DataRepositoryInner) { + pub fn load(&mut self, data_repository: &DataRepositoryInner) where T : Send + Sync { self.cache.clear(); if self.parallel { - let mut cache: Vec> = data_repository + self.cache = data_repository .cache .par_iter() .enumerate() @@ -138,21 +138,37 @@ impl, D: DbLayer> Query { }) .collect(); - cache.extend( - data_repository - .temporal - .iter() - .enumerate() - .filter(|(_, entity)| (self.rule)(entity)) - .map(|(i, entity)| EntityHandle { - id: entity.id(), - real: false, - index: i as u32, - _phantom: PhantomData, - }) - .collect::>(), - ); + } + else { + self.cache = data_repository + .cache + .iter() + .enumerate() + .filter(|(_, entity)| (self.rule)(entity)) + .map(|(i, entity)| EntityHandle { + id: entity.id(), + real: true, + index: i as u32, + _phantom: PhantomData, + }) + .collect(); + } + + self.cache.extend( + data_repository + .temporal + .iter() + .enumerate() + .filter(|(_, entity)| (self.rule)(entity)) + .map(|(i, entity)| EntityHandle { + id: entity.id(), + real: false, + index: i as u32, + _phantom: PhantomData, + }) + .collect::>(), + ); } }