clean up db type code to better match actual usage
parent
2f68323ecb
commit
1df746596f
|
@ -1,27 +1,27 @@
|
||||||
use crate::addressing::Address;
|
use crate::addressing::Address;
|
||||||
use crate::database::entry::{EntryValue, InvariantEntry};
|
use crate::database::entry::{EntryValue, InvariantEntry};
|
||||||
|
|
||||||
pub const TYPE_TYPE: &str = "TYPE";
|
pub const TYPE_TYPE_VAL: &str = "TYPE";
|
||||||
pub const TYPE_IS_ATTR: &str = "TYPE";
|
pub const TYPE_BASE_ATTR: &str = "TYPE";
|
||||||
pub const TYPE_REQUIRES_ATTR: &str = "TYPE_REQUIRES";
|
|
||||||
pub const TYPE_HAS_ATTR: &str = "TYPE_HAS";
|
pub const TYPE_HAS_ATTR: &str = "TYPE_HAS";
|
||||||
pub const TYPE_ID_ATTR: &str = "TYPE_ID";
|
// pub const TYPE_ATTR_REQUIRED: &str = "TYPE_ATTR_REQUIRED";
|
||||||
pub const TYPE_INSTANCES_ATTR: &str = "TYPE_INSTANCES";
|
|
||||||
pub const IS_OF_TYPE_ATTR: &str = "IS";
|
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_HAS_ATTR: &str = "HAS";
|
||||||
pub const HIER_LABEL_ATTR: &str = "LBL";
|
|
||||||
|
pub const LABEL_ATTR: &str = "LBL";
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref TYPE_INVARIANT: InvariantEntry = InvariantEntry {
|
pub static ref TYPE_INVARIANT: InvariantEntry = InvariantEntry {
|
||||||
attribute: String::from(TYPE_IS_ATTR),
|
attribute: String::from(TYPE_BASE_ATTR),
|
||||||
value: EntryValue::Value(serde_json::Value::from(TYPE_TYPE)),
|
value: EntryValue::Value(serde_json::Value::from(TYPE_TYPE_VAL)),
|
||||||
};
|
};
|
||||||
pub static ref TYPE_ADDR: Address = TYPE_INVARIANT.entity().unwrap();
|
pub static ref TYPE_ADDR: Address = TYPE_INVARIANT.entity().unwrap();
|
||||||
pub static ref HIER_INVARIANT: InvariantEntry = InvariantEntry {
|
pub static ref HIER_INVARIANT: InvariantEntry = InvariantEntry {
|
||||||
attribute: String::from(TYPE_IS_ATTR),
|
attribute: String::from(TYPE_BASE_ATTR),
|
||||||
value: EntryValue::Value(serde_json::Value::from(HIER_TYPE)),
|
value: EntryValue::Value(serde_json::Value::from(HIER_TYPE_VAL)),
|
||||||
};
|
};
|
||||||
pub static ref HIER_ADDR: Address = HIER_INVARIANT.entity().unwrap();
|
pub static ref HIER_ADDR: Address = HIER_INVARIANT.entity().unwrap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,7 @@ use uuid::Uuid;
|
||||||
|
|
||||||
use crate::addressing::Address;
|
use crate::addressing::Address;
|
||||||
use crate::database::constants::{
|
use crate::database::constants::{
|
||||||
HIER_ADDR, HIER_HAS_ATTR, HIER_INVARIANT, HIER_LABEL_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR,
|
HIER_ADDR, HIER_HAS_ATTR, HIER_INVARIANT, IS_OF_TYPE_ATTR, LABEL_ATTR, TYPE_ADDR, TYPE_HAS_ATTR,
|
||||||
TYPE_HAS_ATTR, TYPE_ID_ATTR,
|
|
||||||
};
|
};
|
||||||
use crate::database::entry::{Entry, EntryValue, InvariantEntry};
|
use crate::database::entry::{Entry, EntryValue, InvariantEntry};
|
||||||
use crate::database::lang::{EntryQuery, Query, QueryComponent, QueryPart};
|
use crate::database::lang::{EntryQuery, Query, QueryComponent, QueryPart};
|
||||||
|
@ -18,7 +17,7 @@ use crate::database::{bulk_retrieve_objects, insert_entry, query, DbPool};
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref HIER_ROOT_INVARIANT: InvariantEntry = InvariantEntry {
|
static ref HIER_ROOT_INVARIANT: InvariantEntry = InvariantEntry {
|
||||||
attribute: String::from(HIER_LABEL_ATTR),
|
attribute: String::from(LABEL_ATTR),
|
||||||
value: EntryValue::Value(Value::from("/")),
|
value: EntryValue::Value(Value::from("/")),
|
||||||
};
|
};
|
||||||
static ref HIER_ROOT_INVARIANT_ADDR: Address = HIER_ROOT_INVARIANT.entity().unwrap();
|
static ref HIER_ROOT_INVARIANT_ADDR: Address = HIER_ROOT_INVARIANT.entity().unwrap();
|
||||||
|
@ -169,7 +168,7 @@ pub fn fetch_or_create_dir<C: Connection<Backend = Sqlite>>(
|
||||||
connection,
|
connection,
|
||||||
Query::SingleQuery(QueryPart::Matches(EntryQuery {
|
Query::SingleQuery(QueryPart::Matches(EntryQuery {
|
||||||
entity: QueryComponent::Any,
|
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(
|
value: QueryComponent::Exact(EntryValue::Value(Value::String(
|
||||||
directory.as_ref().clone(),
|
directory.as_ref().clone(),
|
||||||
))),
|
))),
|
||||||
|
@ -205,7 +204,7 @@ pub fn fetch_or_create_dir<C: Connection<Backend = Sqlite>>(
|
||||||
|
|
||||||
let directory_entry = Entry {
|
let directory_entry = Entry {
|
||||||
entity: new_directory_address.clone(),
|
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())),
|
value: EntryValue::Value(Value::String(directory.as_ref().clone())),
|
||||||
};
|
};
|
||||||
insert_entry(connection, directory_entry)?;
|
insert_entry(connection, directory_entry)?;
|
||||||
|
@ -254,7 +253,6 @@ pub fn resolve_path<C: Connection<Backend = Sqlite>>(
|
||||||
pub fn initialize_hier(pool: &DbPool) -> Result<()> {
|
pub fn initialize_hier(pool: &DbPool) -> Result<()> {
|
||||||
insert_entry(&pool.get()?, Entry::try_from(&*HIER_INVARIANT)?)?;
|
insert_entry(&pool.get()?, Entry::try_from(&*HIER_INVARIANT)?)?;
|
||||||
upend_insert_addr!(&pool.get()?, HIER_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR);
|
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);
|
upend_insert_val!(&pool.get()?, HIER_ADDR, TYPE_HAS_ATTR, HIER_HAS_ATTR);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,7 @@ pub mod inner;
|
||||||
pub mod lang;
|
pub mod lang;
|
||||||
|
|
||||||
use crate::addressing::Address;
|
use crate::addressing::Address;
|
||||||
use crate::database::constants::{
|
use crate::database::constants::{IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_HAS_ATTR, TYPE_INVARIANT};
|
||||||
IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_ID_ATTR, TYPE_INVARIANT, TYPE_IS_ATTR,
|
|
||||||
};
|
|
||||||
use crate::database::entry::{Entry, EntryValue};
|
use crate::database::entry::{Entry, EntryValue};
|
||||||
use crate::database::inner::models;
|
use crate::database::inner::models;
|
||||||
use crate::database::inner::schema::data;
|
use crate::database::inner::schema::data;
|
||||||
|
@ -281,7 +279,7 @@ pub fn open_upend<P: AsRef<Path>>(
|
||||||
fn initialize_types(pool: &DbPool) -> Result<()> {
|
fn initialize_types(pool: &DbPool) -> Result<()> {
|
||||||
insert_entry(&pool.get()?, Entry::try_from(&*TYPE_INVARIANT)?)?;
|
insert_entry(&pool.get()?, Entry::try_from(&*TYPE_INVARIANT)?)?;
|
||||||
upend_insert_addr!(&pool.get()?, TYPE_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR);
|
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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,7 @@ use std::{fs, iter};
|
||||||
|
|
||||||
use crate::addressing::Address;
|
use crate::addressing::Address;
|
||||||
use crate::database::constants::{
|
use crate::database::constants::{
|
||||||
HIER_HAS_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_HAS_ATTR, TYPE_ID_ATTR, TYPE_INSTANCES_ATTR,
|
HIER_HAS_ATTR, IS_OF_TYPE_ATTR, TYPE_ADDR, TYPE_BASE_ATTR, TYPE_HAS_ATTR,
|
||||||
TYPE_IS_ATTR, TYPE_REQUIRES_ATTR,
|
|
||||||
};
|
};
|
||||||
use crate::database::entry::{Entry, EntryValue, InvariantEntry};
|
use crate::database::entry::{Entry, EntryValue, InvariantEntry};
|
||||||
use crate::database::hierarchies::{resolve_path, UNode, UPath};
|
use crate::database::hierarchies::{resolve_path, UNode, UPath};
|
||||||
|
@ -26,24 +25,15 @@ use rayon::prelude::*;
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use walkdir::WalkDir;
|
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 BLOB_TYPE: &str = "BLOB";
|
||||||
const ALIAS_KEY: &str = "ALIAS";
|
const ALIAS_KEY: &str = "ALIAS";
|
||||||
const FILE_MIME_KEY: &str = "FILE_MIME";
|
const FILE_MIME_KEY: &str = "FILE_MIME";
|
||||||
const FILE_MTIME_KEY: &str = "FILE_MTIME";
|
const FILE_MTIME_KEY: &str = "FILE_MTIME";
|
||||||
const FILE_SIZE_KEY: &str = "FILE_SIZE";
|
const FILE_SIZE_KEY: &str = "FILE_SIZE";
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref BLOB_TYPE_INVARIANT: InvariantEntry = InvariantEntry {
|
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)),
|
value: EntryValue::Value(Value::from(BLOB_TYPE)),
|
||||||
};
|
};
|
||||||
static ref BLOB_TYPE_ADDR: Address = BLOB_TYPE_INVARIANT.entity().unwrap();
|
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_SIZE_KEY);
|
||||||
upend_insert_val!(&pool.get()?, BLOB_TYPE_ADDR, TYPE_HAS_ATTR, FILE_MIME_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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue