diff --git a/src/data/repositories.rs b/src/data/repositories.rs index 59ed59e..f94ba8b 100644 --- a/src/data/repositories.rs +++ b/src/data/repositories.rs @@ -7,10 +7,8 @@ use rayon::iter::IndexedParallelIterator; use rayon::iter::IntoParallelRefIterator; use rayon::iter::ParallelIterator; use rusqlite::Connection; -use std::cell::RefCell; use std::marker::PhantomData; use std::ops::Deref; -use std::rc::Weak; use std::sync::Arc; pub trait Repository @@ -100,6 +98,7 @@ where rule: Box bool + Send + Sync>, parallel: bool, _marker: PhantomData<(R, D)>, + shift_stamp: u16 } impl, D: DbLayer> Query { @@ -195,6 +194,7 @@ pub struct DataRepositoryInner> data_layer: D, query_manger: QueryManger, version: u16, + shifts: u16, } impl> Deref for DataRepository { @@ -235,6 +235,7 @@ impl> DataRepositoryInner { rule, parallel: true, _marker: PhantomData, + shift_stamp: self.shifts, } } @@ -267,6 +268,7 @@ impl> DataRepositoryInner { rule, parallel: false, _marker: PhantomData, + shift_stamp: self.shifts, } } } @@ -332,6 +334,7 @@ impl> Repository for DataRepositoryIn self.query_manger.handle_save(original_state, entity, &data); self.cache.push(data); + self.shifts += 1; } Ok(()) @@ -352,6 +355,7 @@ impl> Repository for DataRepositoryIn )?; let value = vec.remove(index); self.query_manger.handle_delete(&handle, &value); + self.shifts += 1; Ok(()) } @@ -421,6 +425,7 @@ impl + DbLayer> BatchedRepository self.data_layer .write_entity(&self.cache[idx], &self.connection.read())?; } + self.shifts += 1; Ok(()) } @@ -457,6 +462,7 @@ impl + DbLayer> BatchedRepository !remove }); + self.shifts += 1; Ok(()) }