Repetition settings remake
This commit is contained in:
1 parent
a68e56e861
commit
22c05250aa
2 files changed
+73
-40
No files matched your search
@@ -1,5 +1,5 @@
|
||||
use crate::data::Id;
|
||||
use crate::data::entities::{EntityData, EntityHandle};
|
||||
use crate::data::entities::{CardState, EntityData, EntityHandle};
|
||||
use crate::data_provider::sqlite::SqliteConnection;
|
||||
use crate::helpers::into_result;
|
||||
use crate::notification::{MaybeError, NotificationData};
|
||||
@@ -22,6 +22,8 @@ where
|
||||
fn get_static(&self, handle: EntityHandle<T>) -> Option<T>;
|
||||
fn get_ref_static(&self, handle: EntityHandle<T>) -> Option<&T>;
|
||||
fn get_mut_static(&mut self, handle: EntityHandle<T>) -> Option<&mut T>;
|
||||
fn set(&mut self, handle: &mut EntityHandle<T>, value: T);
|
||||
fn set_static(&mut self, handle: EntityHandle<T>, value: T);
|
||||
fn handle_by_id(&self, id: Id) -> EntityHandle<T>;
|
||||
fn create(&mut self, new: T) -> EntityHandle<T>;
|
||||
fn create_now(&mut self, new: T) -> Result<EntityHandle<T>, NotificationData>;
|
||||
@@ -411,6 +413,20 @@ impl<T: EntityData + Clone, D: DbLayer<T>> Repository<T, D> for DataRepositoryIn
|
||||
self.get_mut(&mut handle)
|
||||
}
|
||||
|
||||
fn set(&mut self, handle: &mut EntityHandle<T>, value: T) {
|
||||
let slice = if handle.real() {
|
||||
self.cache.as_mut_slice()
|
||||
} else {
|
||||
self.temporal.as_mut_slice()
|
||||
};
|
||||
let index = fast_position_of(slice, handle).unwrap();
|
||||
slice[index] = value;
|
||||
}
|
||||
|
||||
fn set_static(&mut self, mut handle: EntityHandle<T>, value: T) {
|
||||
self.set(&mut handle, value)
|
||||
}
|
||||
|
||||
fn handle_by_id(&self, id: Id) -> EntityHandle<T> {
|
||||
EntityHandle::new(id, id.0 as usize, true)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user