Clear code and add shifts into Query

This commit is contained in:
micialware committed 2026-08-29 23:15:22 +03:00
1 parent ea214d8ac0
commit b006ece0c1
1 file changed
+8 -2
+8 -2
View File
@@ -7,10 +7,8 @@ use rayon::iter::IndexedParallelIterator;
use rayon::iter::IntoParallelRefIterator; use rayon::iter::IntoParallelRefIterator;
use rayon::iter::ParallelIterator; use rayon::iter::ParallelIterator;
use rusqlite::Connection; use rusqlite::Connection;
use std::cell::RefCell;
use std::marker::PhantomData; use std::marker::PhantomData;
use std::ops::Deref; use std::ops::Deref;
use std::rc::Weak;
use std::sync::Arc; use std::sync::Arc;
pub trait Repository<T, D> pub trait Repository<T, D>
@@ -100,6 +98,7 @@ where
rule: Box<dyn Fn(&T) -> bool + Send + Sync>, rule: Box<dyn Fn(&T) -> bool + Send + Sync>,
parallel: bool, parallel: bool,
_marker: PhantomData<(R, D)>, _marker: PhantomData<(R, D)>,
shift_stamp: u16
} }
impl<T: EntityData + Clone, R: Repository<T, D>, D: DbLayer<T>> Query<T, R, D> { impl<T: EntityData + Clone, R: Repository<T, D>, D: DbLayer<T>> Query<T, R, D> {
@@ -195,6 +194,7 @@ pub struct DataRepositoryInner<T: std::clone::Clone + EntityData, D: DbLayer<T>>
data_layer: D, data_layer: D,
query_manger: QueryManger<T, Self, D>, query_manger: QueryManger<T, Self, D>,
version: u16, version: u16,
shifts: u16,
} }
impl<T: std::clone::Clone + EntityData, D: DbLayer<T>> Deref for DataRepository<T, D> { impl<T: std::clone::Clone + EntityData, D: DbLayer<T>> Deref for DataRepository<T, D> {
@@ -235,6 +235,7 @@ impl<T: EntityData + Clone, D: DbLayer<T>> DataRepositoryInner<T, D> {
rule, rule,
parallel: true, parallel: true,
_marker: PhantomData, _marker: PhantomData,
shift_stamp: self.shifts,
} }
} }
@@ -267,6 +268,7 @@ impl<T: EntityData + Clone, D: DbLayer<T>> DataRepositoryInner<T, D> {
rule, rule,
parallel: false, parallel: false,
_marker: PhantomData, _marker: PhantomData,
shift_stamp: self.shifts,
} }
} }
} }
@@ -332,6 +334,7 @@ impl<T: EntityData + Clone, D: DbLayer<T>> Repository<T, D> for DataRepositoryIn
self.query_manger.handle_save(original_state, entity, &data); self.query_manger.handle_save(original_state, entity, &data);
self.cache.push(data); self.cache.push(data);
self.shifts += 1;
} }
Ok(()) Ok(())
@@ -352,6 +355,7 @@ impl<T: EntityData + Clone, D: DbLayer<T>> Repository<T, D> for DataRepositoryIn
)?; )?;
let value = vec.remove(index); let value = vec.remove(index);
self.query_manger.handle_delete(&handle, &value); self.query_manger.handle_delete(&handle, &value);
self.shifts += 1;
Ok(()) Ok(())
} }
@@ -421,6 +425,7 @@ impl<T: EntityData + Clone, D: BatchedDbLayer<T> + DbLayer<T>> BatchedRepository
self.data_layer self.data_layer
.write_entity(&self.cache[idx], &self.connection.read())?; .write_entity(&self.cache[idx], &self.connection.read())?;
} }
self.shifts += 1;
Ok(()) Ok(())
} }
@@ -457,6 +462,7 @@ impl<T: EntityData + Clone, D: BatchedDbLayer<T> + DbLayer<T>> BatchedRepository
!remove !remove
}); });
self.shifts += 1;
Ok(()) Ok(())
} }