diff --git a/src/database/constants.rs b/src/database/constants.rs index 6ecdb6e..b475f85 100644 --- a/src/database/constants.rs +++ b/src/database/constants.rs @@ -1,27 +1,27 @@ use crate::addressing::Address; use crate::database::entry::{EntryValue, InvariantEntry}; -pub const TYPE_TYPE: &str = "TYPE"; -pub const TYPE_IS_ATTR: &str = "TYPE"; -pub const TYPE_REQUIRES_ATTR: &str = "TYPE_REQUIRES"; +pub const TYPE_TYPE_VAL: &str = "TYPE"; +pub const TYPE_BASE_ATTR: &str = "TYPE"; pub const TYPE_HAS_ATTR: &str = "TYPE_HAS"; -pub const TYPE_ID_ATTR: &str = "TYPE_ID"; -pub const TYPE_INSTANCES_ATTR: &str = "TYPE_INSTANCES"; +// pub const TYPE_ATTR_REQUIRED: &str = "TYPE_ATTR_REQUIRED"; + pub const IS_OF_TYPE_ATTR: &str = "IS"; -pub const HIER_TYPE: &str = "HIER"; +pub const HIER_TYPE_VAL: &str = "HIER"; pub const HIER_HAS_ATTR: &str = "HAS"; -pub const HIER_LABEL_ATTR: &str = "LBL"; + +pub const LABEL_ATTR: &str = "LBL"; lazy_static! { pub static ref TYPE_INVARIANT: InvariantEntry = InvariantEntry { - attribute: String::from(TYPE_IS_ATTR), - value: EntryValue::Value(serde_json::Value::from(TYPE_TYPE)), + attribute: String::from(TYPE_BASE_ATTR), + value: EntryValue::Value(serde_json::Value::from(TYPE_TYPE_VAL)), }; pub static ref TYPE_ADDR: Address = TYPE_INVARIANT.entity().unwrap(); pub static ref HIER_INVARIANT: InvariantEntry = InvariantEntry { - attribute: String::from(TYPE_IS_ATTR), - value: EntryValue::Value(serde_json::Value::from(HIER_TYPE)), + attribute: String::from(TYPE_BASE_ATTR), + value: EntryValue::Value(serde_json::Value::from(HIER_TYPE_VAL)), }; pub static ref HIER_ADDR: Address = HIER_INVARIANT.entity().unwrap(); } diff --git a/src/database/hierarchies.rs b/src/database/hierarchies.rs index 086e1b8..0c044f7 100644 --- a/src/database/hierarchies.rs +++ b/src/database/hierarchies.rs @@ -9,8 +9,7 @@ use uuid::Uuid; use crate::addressing::Address; use crate::database::constants::{ - HIER_ADDR, HIER_HAS_ATTR, HIER_INVARIANT, HIER_LABEL_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR, - TYPE_HAS_ATTR, TYPE_ID_ATTR, + HIER_ADDR, HIER_HAS_ATTR, HIER_INVARIANT, IS_OF_TYPE_ATTR, LABEL_ATTR, TYPE_ADDR, TYPE_HAS_ATTR, }; use crate::database::entry::{Entry, EntryValue, InvariantEntry}; use crate::database::lang::{EntryQuery, Query, QueryComponent, QueryPart}; @@ -18,7 +17,7 @@ use crate::database::{bulk_retrieve_objects, insert_entry, query, DbPool}; lazy_static! { static ref HIER_ROOT_INVARIANT: InvariantEntry = InvariantEntry { - attribute: String::from(HIER_LABEL_ATTR), + attribute: String::from(LABEL_ATTR), value: EntryValue::Value(Value::from("/")), }; static ref HIER_ROOT_INVARIANT_ADDR: Address = HIER_ROOT_INVARIANT.entity().unwrap(); @@ -169,7 +168,7 @@ pub fn fetch_or_create_dir>( connection, Query::SingleQuery(QueryPart::Matches(EntryQuery { entity: QueryComponent::Any, - attribute: QueryComponent::Exact(String::from(HIER_LABEL_ATTR)), + attribute: QueryComponent::Exact(String::from(LABEL_ATTR)), value: QueryComponent::Exact(EntryValue::Value(Value::String( directory.as_ref().clone(), ))), @@ -205,7 +204,7 @@ pub fn fetch_or_create_dir>( let directory_entry = Entry { entity: new_directory_address.clone(), - attribute: String::from(HIER_LABEL_ATTR), + attribute: String::from(LABEL_ATTR), value: EntryValue::Value(Value::String(directory.as_ref().clone())), }; insert_entry(connection, directory_entry)?; @@ -254,7 +253,6 @@ pub fn resolve_path>( pub fn initialize_hier(pool: &DbPool) -> Result<()> { insert_entry(&pool.get()?, Entry::try_from(&*HIER_INVARIANT)?)?; upend_insert_addr!(&pool.get()?, HIER_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR); - upend_insert_val!(&pool.get()?, HIER_ADDR, TYPE_ID_ATTR, HIER_LABEL_ATTR); upend_insert_val!(&pool.get()?, HIER_ADDR, TYPE_HAS_ATTR, HIER_HAS_ATTR); Ok(()) } diff --git a/src/database/mod.rs b/src/database/mod.rs index a03e187..193c86c 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -10,9 +10,7 @@ pub mod inner; pub mod lang; use crate::addressing::Address; -use crate::database::constants::{ - IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_ID_ATTR, TYPE_INVARIANT, TYPE_IS_ATTR, -}; +use crate::database::constants::{IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_HAS_ATTR, TYPE_INVARIANT}; use crate::database::entry::{Entry, EntryValue}; use crate::database::inner::models; use crate::database::inner::schema::data; @@ -281,7 +279,7 @@ pub fn open_upend>( fn initialize_types(pool: &DbPool) -> Result<()> { insert_entry(&pool.get()?, Entry::try_from(&*TYPE_INVARIANT)?)?; upend_insert_addr!(&pool.get()?, TYPE_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR); - upend_insert_val!(&pool.get()?, TYPE_ADDR, TYPE_ID_ATTR, TYPE_IS_ATTR); + upend_insert_val!(&pool.get()?, TYPE_ADDR, TYPE_HAS_ATTR, TYPE_HAS_ATTR); Ok(()) } diff --git a/src/filesystem.rs b/src/filesystem.rs index f5a6c62..f204b9b 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -6,8 +6,7 @@ use std::{fs, iter}; use crate::addressing::Address; use crate::database::constants::{ - HIER_HAS_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_HAS_ATTR, TYPE_ID_ATTR, TYPE_INSTANCES_ATTR, - TYPE_IS_ATTR, TYPE_REQUIRES_ATTR, + HIER_HAS_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_BASE_ATTR, TYPE_HAS_ATTR, }; use crate::database::entry::{Entry, EntryValue, InvariantEntry}; use crate::database::hierarchies::{resolve_path, UNode, UPath}; @@ -26,24 +25,15 @@ use rayon::prelude::*; use serde_json::Value; use walkdir::WalkDir; -const DIR_TYPE: &str = "FS_DIR"; -const DIR_KEY: &str = "DIR"; -lazy_static! { - static ref DIR_TYPE_INVARIANT: InvariantEntry = InvariantEntry { - attribute: String::from(TYPE_IS_ATTR), - value: EntryValue::Value(Value::from(DIR_TYPE)), - }; - static ref DIR_TYPE_ADDR: Address = DIR_TYPE_INVARIANT.entity().unwrap(); -} - const BLOB_TYPE: &str = "BLOB"; const ALIAS_KEY: &str = "ALIAS"; const FILE_MIME_KEY: &str = "FILE_MIME"; const FILE_MTIME_KEY: &str = "FILE_MTIME"; const FILE_SIZE_KEY: &str = "FILE_SIZE"; + lazy_static! { static ref BLOB_TYPE_INVARIANT: InvariantEntry = InvariantEntry { - attribute: String::from(TYPE_IS_ATTR), + attribute: String::from(TYPE_BASE_ATTR), value: EntryValue::Value(Value::from(BLOB_TYPE)), }; static ref BLOB_TYPE_ADDR: Address = BLOB_TYPE_INVARIANT.entity().unwrap(); @@ -57,12 +47,6 @@ fn initialize_types(pool: &DbPool) -> Result<()> { upend_insert_val!(&pool.get()?, BLOB_TYPE_ADDR, TYPE_HAS_ATTR, FILE_SIZE_KEY); upend_insert_val!(&pool.get()?, BLOB_TYPE_ADDR, TYPE_HAS_ATTR, FILE_MIME_KEY); - // DIR_TYPE - insert_entry(&pool.get()?, Entry::try_from(&*DIR_TYPE_INVARIANT)?)?; - upend_insert_addr!(&pool.get()?, DIR_TYPE_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR); - upend_insert_val!(&pool.get()?, DIR_TYPE_ADDR, TYPE_ID_ATTR, DIR_KEY); - upend_insert_val!(&pool.get()?, DIR_TYPE_ADDR, TYPE_HAS_ATTR, HIER_HAS_ATTR); - Ok(()) }