From ab491130a70eed2f93cf88d9495ab321fab2e88b Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Tue, 30 Sep 2025 12:03:00 +0200 Subject: [PATCH] refactor: extract load_attributes from load_by_id --- 01.workspace/heave/src/fun/mod.rs | 2 ++ .../heave/src/fun/sqlite_load_attributes.rs | 18 ++++++++++++++++++ .../heave/src/fun/sqlite_load_by_class.rs | 10 ++++++++++ .../heave/src/fun/sqlite_load_by_id.rs | 19 +------------------ 01.workspace/heave/src/lib.rs | 2 ++ 5 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 01.workspace/heave/src/fun/sqlite_load_attributes.rs create mode 100644 01.workspace/heave/src/fun/sqlite_load_by_class.rs diff --git a/01.workspace/heave/src/fun/mod.rs b/01.workspace/heave/src/fun/mod.rs index 1227414..957abb8 100644 --- a/01.workspace/heave/src/fun/mod.rs +++ b/01.workspace/heave/src/fun/mod.rs @@ -1,4 +1,6 @@ pub mod sqlite_init_db; +pub mod sqlite_load_attributes; +pub mod sqlite_load_by_class; pub mod sqlite_load_by_id; pub mod sqlite_map_row_to_attribute; pub mod sqlite_map_row_to_entity; diff --git a/01.workspace/heave/src/fun/sqlite_load_attributes.rs b/01.workspace/heave/src/fun/sqlite_load_attributes.rs new file mode 100644 index 0000000..a01d7bf --- /dev/null +++ b/01.workspace/heave/src/fun/sqlite_load_attributes.rs @@ -0,0 +1,18 @@ +use crate::*; +use rusqlite::*; + +const SELECT_ATTRIBUTE_BY_FK: &str = r#" + SELECT * FROM attribute + WHERE entity_id = ?1; +"#; + +pub fn run(connection: &Connection, entity: &mut Entity) { + let mut select_attributes_statement = connection.prepare(SELECT_ATTRIBUTE_BY_FK).unwrap(); + let attributes = select_attributes_statement + .query_map([&entity.id], sqlite::map::row_to_attribute) + .unwrap(); + for attribute in attributes { + let attribute = attribute.unwrap(); + entity.attributes.insert(attribute.id.clone(), attribute); + } +} diff --git a/01.workspace/heave/src/fun/sqlite_load_by_class.rs b/01.workspace/heave/src/fun/sqlite_load_by_class.rs new file mode 100644 index 0000000..6fd1a80 --- /dev/null +++ b/01.workspace/heave/src/fun/sqlite_load_by_class.rs @@ -0,0 +1,10 @@ +use crate::*; + +pub fn run() { + todo!("sqlite_load_by_class: missing implementation"); +} + +// #[cfg(test)] +// mod unit_tests { +// use super::*; +// } diff --git a/01.workspace/heave/src/fun/sqlite_load_by_id.rs b/01.workspace/heave/src/fun/sqlite_load_by_id.rs index 9544a80..2a908f2 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_id.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_id.rs @@ -6,11 +6,6 @@ const SELECT_ENTITY_BY_ID: &str = r#" WHERE id = ?1; "#; -const SELECT_ATTRIBUTE_BY_FK: &str = r#" - SELECT * FROM attribute - WHERE entity_id = ?1; -"#; - pub fn run(path: &path::Path, entity_id: &str) -> Option { let connection = Connection::open(path).unwrap(); let result = connection @@ -18,19 +13,7 @@ pub fn run(path: &path::Path, entity_id: &str) -> Option { .optional(); let mut entity = result.unwrap(); if let Some(ref mut entity) = entity { - let mut select_attributes_statement = connection.prepare(SELECT_ATTRIBUTE_BY_FK).unwrap(); - let attributes = select_attributes_statement - .query_map([&entity.id], sqlite::map::row_to_attribute) - .unwrap(); - for attribute in attributes { - let attribute = attribute.unwrap(); - entity.attributes.insert(attribute.id.clone(), attribute); - } + sqlite::load::attributes(&connection, entity); } entity } - -// #[cfg(test)] -// mod unit_tests { -// use super::*; -// } diff --git a/01.workspace/heave/src/lib.rs b/01.workspace/heave/src/lib.rs index eb76490..2389bdc 100644 --- a/01.workspace/heave/src/lib.rs +++ b/01.workspace/heave/src/lib.rs @@ -18,6 +18,8 @@ mod sqlite { pub use crate::fun::sqlite_init_db::run as db; } pub mod load { + pub use crate::fun::sqlite_load_attributes::run as attributes; + pub use crate::fun::sqlite_load_by_class::run as by_class; pub use crate::fun::sqlite_load_by_id::run as by_id; } pub mod map {