create macros for common (type) inserts
parent
841dc7c07b
commit
86294ebf53
|
@ -1,3 +1,4 @@
|
|||
#![macro_use]
|
||||
use crate::addressing::Address;
|
||||
use crate::hash::{decode, hash, Hash, Hashable};
|
||||
use crate::models;
|
||||
|
@ -41,6 +42,35 @@ lazy_static! {
|
|||
pub static ref TYPE_ADDR: Address = TYPE_INVARIANT.entity().unwrap();
|
||||
}
|
||||
|
||||
#[macro_use]
|
||||
mod macros {
|
||||
macro_rules! upend_insert_val {
|
||||
($db_connection:expr, $entity:expr, $attribute:expr, $value:expr) => {{
|
||||
insert_entry(
|
||||
$db_connection,
|
||||
Entry {
|
||||
entity: $entity.clone(),
|
||||
attribute: String::from($attribute),
|
||||
value: EntryValue::Value(serde_json::Value::from($value)),
|
||||
},
|
||||
)?;
|
||||
}};
|
||||
}
|
||||
|
||||
macro_rules! upend_insert_addr {
|
||||
($db_connection:expr, $entity:expr, $attribute:expr, $addr:expr) => {{
|
||||
insert_entry(
|
||||
$db_connection,
|
||||
Entry {
|
||||
entity: $entity.clone(),
|
||||
attribute: String::from($attribute),
|
||||
value: EntryValue::Address($addr.clone()),
|
||||
},
|
||||
)?;
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Entry {
|
||||
pub entity: Address,
|
||||
|
@ -741,22 +771,7 @@ pub fn open_upend<P: AsRef<Path>>(
|
|||
|
||||
fn initialize_types(pool: &DbPool) -> Result<()> {
|
||||
insert_entry(&pool.get()?, Entry::try_from(&*TYPE_INVARIANT)?)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: TYPE_ADDR.clone(),
|
||||
attribute: String::from(IS_OF_TYPE_ATTR),
|
||||
value: EntryValue::Address(TYPE_ADDR.clone()),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_ID_ATTR),
|
||||
value: EntryValue::Value(serde_json::Value::from(TYPE_IS_ATTR)),
|
||||
},
|
||||
)?;
|
||||
|
||||
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);
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -59,76 +59,25 @@ lazy_static! {
|
|||
fn initialize_types(pool: &DbPool) -> Result<()> {
|
||||
// BLOB_TYPE
|
||||
insert_entry(&pool.get()?, Entry::try_from(&*BLOB_TYPE_INVARIANT)?)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: BLOB_TYPE_ADDR.clone(),
|
||||
attribute: String::from(IS_OF_TYPE_ATTR),
|
||||
value: EntryValue::Address(TYPE_ADDR.clone()),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: BLOB_TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_INSTANCED_ATTR),
|
||||
value: EntryValue::Value(Value::from(FILE_TYPE)),
|
||||
},
|
||||
)?;
|
||||
upend_insert_addr!(&pool.get()?, BLOB_TYPE_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR);
|
||||
upend_insert_val!(&pool.get()?, BLOB_TYPE_ADDR, TYPE_INSTANCED_ATTR, FILE_TYPE);
|
||||
|
||||
// FILE_TYPE
|
||||
insert_entry(&pool.get()?, Entry::try_from(&*FILE_TYPE_INVARIANT)?)?;
|
||||
insert_entry(
|
||||
upend_insert_addr!(&pool.get()?, FILE_TYPE_ADDR, IS_OF_TYPE_ATTR, TYPE_ADDR);
|
||||
upend_insert_val!(&pool.get()?, FILE_TYPE_ADDR, TYPE_ID_ATTR, FILENAME_KEY);
|
||||
upend_insert_val!(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: FILE_TYPE_ADDR.clone(),
|
||||
attribute: String::from(IS_OF_TYPE_ATTR),
|
||||
value: EntryValue::Address(TYPE_ADDR.clone()),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: FILE_TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_ID_ATTR),
|
||||
value: EntryValue::Value(Value::from(FILENAME_KEY)),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: FILE_TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_REQUIRES_ATTR),
|
||||
value: EntryValue::Value(Value::from(FILE_IDENTITY_KEY)),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: FILE_TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_HAS_ATTR),
|
||||
value: EntryValue::Value(Value::from(FILE_MIME_KEY)),
|
||||
},
|
||||
)?;
|
||||
FILE_TYPE_ADDR,
|
||||
TYPE_REQUIRES_ATTR,
|
||||
FILE_IDENTITY_KEY
|
||||
);
|
||||
upend_insert_val!(&pool.get()?, FILE_TYPE_ADDR, TYPE_HAS_ATTR, FILE_MIME_KEY);
|
||||
|
||||
// DIR_TYPE
|
||||
insert_entry(&pool.get()?, Entry::try_from(&*DIR_TYPE_INVARIANT)?)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: DIR_TYPE_ADDR.clone(),
|
||||
attribute: String::from(IS_OF_TYPE_ATTR),
|
||||
value: EntryValue::Address(TYPE_ADDR.clone()),
|
||||
},
|
||||
)?;
|
||||
insert_entry(
|
||||
&pool.get()?,
|
||||
Entry {
|
||||
entity: DIR_TYPE_ADDR.clone(),
|
||||
attribute: String::from(TYPE_ID_ATTR),
|
||||
value: EntryValue::Value(Value::from(DIR_KEY)),
|
||||
},
|
||||
)?;
|
||||
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);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue