refactor: extract load_attributes from load_by_id
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
18
01.workspace/heave/src/fun/sqlite_load_attributes.rs
Normal file
18
01.workspace/heave/src/fun/sqlite_load_attributes.rs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
10
01.workspace/heave/src/fun/sqlite_load_by_class.rs
Normal file
10
01.workspace/heave/src/fun/sqlite_load_by_class.rs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
use crate::*;
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
todo!("sqlite_load_by_class: missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
|
// #[cfg(test)]
|
||||||
|
// mod unit_tests {
|
||||||
|
// use super::*;
|
||||||
|
// }
|
||||||
@@ -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::*;
|
|
||||||
// }
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user