refactor: extract load_attributes from load_by_id

This commit is contained in:
2025-09-30 12:03:00 +02:00
parent 172cffaad2
commit ab491130a7
5 changed files with 33 additions and 18 deletions

View File

@@ -1,4 +1,6 @@
pub mod sqlite_init_db; 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_load_by_id;
pub mod sqlite_map_row_to_attribute; pub mod sqlite_map_row_to_attribute;
pub mod sqlite_map_row_to_entity; pub mod sqlite_map_row_to_entity;

View File

@@ -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);
}
}

View File

@@ -0,0 +1,10 @@
use crate::*;
pub fn run() {
todo!("sqlite_load_by_class: missing implementation");
}
// #[cfg(test)]
// mod unit_tests {
// use super::*;
// }

View File

@@ -6,11 +6,6 @@ const SELECT_ENTITY_BY_ID: &str = r#"
WHERE id = ?1; 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<Entity> { pub fn run(path: &path::Path, entity_id: &str) -> Option<Entity> {
let connection = Connection::open(path).unwrap(); let connection = Connection::open(path).unwrap();
let result = connection let result = connection
@@ -18,19 +13,7 @@ pub fn run(path: &path::Path, entity_id: &str) -> Option<Entity> {
.optional(); .optional();
let mut entity = result.unwrap(); let mut entity = result.unwrap();
if let Some(ref mut entity) = entity { if let Some(ref mut entity) = entity {
let mut select_attributes_statement = connection.prepare(SELECT_ATTRIBUTE_BY_FK).unwrap(); sqlite::load::attributes(&connection, entity);
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);
}
} }
entity entity
} }
// #[cfg(test)]
// mod unit_tests {
// use super::*;
// }

View File

@@ -18,6 +18,8 @@ mod sqlite {
pub use crate::fun::sqlite_init_db::run as db; pub use crate::fun::sqlite_init_db::run as db;
} }
pub mod load { 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 use crate::fun::sqlite_load_by_id::run as by_id;
} }
pub mod map { pub mod map {