Add db operation time

This commit is contained in:
micialware committed 2026-08-30 22:36:43 +03:00
1 parent d9bbf9e705
commit 6f010428d5
2 files changed
+45 -2

No files matched your search

-1
View File
@@ -19,7 +19,6 @@ use rusqlite::Connection;
pub const USER_FONT: Font = Font::with_name("Noto Sans JP"); pub const USER_FONT: Font = Font::with_name("Noto Sans JP");
pub fn start() -> iced::Result { pub fn start() -> iced::Result {
println!("{}", size_of::<WordData>());
info!("Welcome to JapLearn"); info!("Welcome to JapLearn");
iced::application(ScreenState::boot, ScreenState::update, ScreenState::view) iced::application(ScreenState::boot, ScreenState::update, ScreenState::view)
.window(window_settings()) .window(window_settings())
+45 -1
View File
@@ -37,22 +37,38 @@ where
impl<T: EntityData, Q: TableAccessQuerySet<T>> DbLayer<T> for SqliteDbLayer<T, Q> { impl<T: EntityData, Q: TableAccessQuerySet<T>> DbLayer<T> for SqliteDbLayer<T, Q> {
fn write_entity(&self, entity: &T, connection: &Connection) -> MaybeError { fn write_entity(&self, entity: &T, connection: &Connection) -> MaybeError {
let time = Instant::now();
connection connection
.execute(Q::load(), Q::update_params(entity)) .execute(Q::load(), Q::update_params(entity))
.map_err(|_| DbSaveError)?; .map_err(|_| DbSaveError)?;
info!(
"Updated in {} for {:?}",
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
fn add_entity(&mut self, entity: &mut T, connection: &Connection) -> MaybeError { fn add_entity(&mut self, entity: &mut T, connection: &Connection) -> MaybeError {
let time = Instant::now();
let index: u32 = connection let index: u32 = connection
.query_row(Q::add(), Q::insert_params(entity), |row| row.get(0)) .query_row(Q::add(), Q::insert_params(entity), |row| row.get(0))
.map_err(|_| DbSaveError)?; .map_err(|_| DbSaveError)?;
entity.set_id(index.into()); entity.set_id(index.into());
info!(
"Added into {} for {:?}",
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
fn delete_entity(&mut self, id: Id, connection: &Connection) -> MaybeError { fn delete_entity(&mut self, id: Id, connection: &Connection) -> MaybeError {
let time = Instant::now();
if !id.is_valid() { if !id.is_valid() {
return Err(DbSaveError); return Err(DbSaveError);
} }
@@ -62,10 +78,17 @@ impl<T: EntityData, Q: TableAccessQuerySet<T>> DbLayer<T> for SqliteDbLayer<T, Q
(&id,), (&id,),
) )
.map_err(|_| DbSaveError)?; .map_err(|_| DbSaveError)?;
info!(
"Deleted from {} for {:?}",
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
fn load_all(&self, storage: &mut Vec<T>, connection: &Connection) -> MaybeError { fn load_all(&self, storage: &mut Vec<T>, connection: &Connection) -> MaybeError {
let time = Instant::now();
let mut stmt = connection let mut stmt = connection
.prepare(Q::load()) .prepare(Q::load())
.expect("Failed to prepare state query"); .expect("Failed to prepare state query");
@@ -75,12 +98,21 @@ impl<T: EntityData, Q: TableAccessQuerySet<T>> DbLayer<T> for SqliteDbLayer<T, Q
iter.filter_map(|res| res.ok()) iter.filter_map(|res| res.ok())
.for_each(|i| storage.push(i)); .for_each(|i| storage.push(i));
info!(
"Loaded {} from {} for {:?}",
storage.len(),
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
} }
impl<T: EntityData, Q: TableAccessQuerySet<T>> BatchedDbLayer<T> for SqliteDbLayer<T, Q> { impl<T: EntityData, Q: TableAccessQuerySet<T>> BatchedDbLayer<T> for SqliteDbLayer<T, Q> {
fn delete_many_entities(&mut self, ids: &[Id], connection: &mut Connection) -> MaybeError { fn delete_many_entities(&mut self, ids: &[Id], connection: &mut Connection) -> MaybeError {
let time = Instant::now();
for chunk in ids.chunks(1000) { for chunk in ids.chunks(1000) {
let stringed = chunk let stringed = chunk
.iter() .iter()
@@ -94,6 +126,13 @@ impl<T: EntityData, Q: TableAccessQuerySet<T>> BatchedDbLayer<T> for SqliteDbLay
) )
.map_err(|_| DbSaveError)?; .map_err(|_| DbSaveError)?;
} }
info!(
"Deleted {} from {} for {:?}",
ids.len(),
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
@@ -121,7 +160,12 @@ impl<T: EntityData, Q: TableAccessQuerySet<T>> BatchedDbLayer<T> for SqliteDbLay
entities[index].set_id(id.into()); entities[index].set_id(id.into());
} }
info!("Added {} entities for {:?}", entities.len(), time.elapsed()); info!(
"Added {} into {} for {:?}",
entities.len(),
Q::name(),
time.elapsed()
);
Ok(()) Ok(())
} }
} }