wip: add address type constants, blob attributes
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
e6a1d3ba02
commit
8bb551bb45
3 changed files with 36 additions and 4 deletions
|
@ -673,10 +673,21 @@ pub async fn get_address(
|
||||||
let (bytes, _) = web::block(|| fetch_external(url)).await??;
|
let (bytes, _) = web::block(|| fetch_external(url)).await??;
|
||||||
let hash_result = hash(&bytes);
|
let hash_result = hash(&bytes);
|
||||||
(Address::Hash(hash_result), false)
|
(Address::Hash(hash_result), false)
|
||||||
|
} else if let Some(type_str) = query.get("type") {
|
||||||
|
match type_str.as_str() {
|
||||||
|
"Hash" => (upend::database::constants::TYPE_HASH_ADDRESS.clone(), true),
|
||||||
|
"Uuid" => (upend::database::constants::TYPE_UUID_ADDRESS.clone(), true),
|
||||||
|
"Attribute" => (
|
||||||
|
upend::database::constants::TYPE_ATTRIBUTE_ADDRESS.clone(),
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
"Url" => (upend::database::constants::TYPE_URL_ADDRESS.clone(), true),
|
||||||
|
_ => return Err(ErrorBadRequest(format!("Unknown type: {type_str}"))),
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return Err(ErrorBadRequest(anyhow!(
|
return Err(ErrorBadRequest(
|
||||||
"Specify one of: `attribute`, `url`, `url_content`."
|
"Specify one of: `attribute`, `url`, `url_content`, `type`.",
|
||||||
)));
|
));
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut response = HttpResponse::Ok();
|
let mut response = HttpResponse::Ok();
|
||||||
|
|
|
@ -22,4 +22,8 @@ lazy_static! {
|
||||||
value: "HIER_ROOT".into(),
|
value: "HIER_ROOT".into(),
|
||||||
};
|
};
|
||||||
pub static ref HIER_ROOT_ADDR: Address = HIER_ROOT_INVARIANT.entity().unwrap();
|
pub static ref HIER_ROOT_ADDR: Address = HIER_ROOT_INVARIANT.entity().unwrap();
|
||||||
|
pub static ref TYPE_HASH_ADDRESS: Address = Address::Hash(crate::util::hash::Hash(vec![]));
|
||||||
|
pub static ref TYPE_UUID_ADDRESS: Address = Address::Uuid(uuid::Uuid::nil());
|
||||||
|
pub static ref TYPE_ATTRIBUTE_ADDRESS: Address = Address::Attribute("".to_string());
|
||||||
|
pub static ref TYPE_URL_ADDRESS: Address = Address::Url(url::Url::parse("up:").unwrap());
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,9 @@ use self::db::files;
|
||||||
|
|
||||||
use super::{Blob, StoreError, UpStore, UpdatePathOutcome};
|
use super::{Blob, StoreError, UpStore, UpdatePathOutcome};
|
||||||
use crate::addressing::Address;
|
use crate::addressing::Address;
|
||||||
use crate::database::constants::{ADDED_ATTR, ATTR_BY_ATTR, IS_OF_ATTR, LABEL_ATTR};
|
use crate::database::constants::{
|
||||||
|
ADDED_ATTR, ATTR_BY_ATTR, IS_OF_ATTR, LABEL_ATTR, TYPE_HASH_ADDRESS,
|
||||||
|
};
|
||||||
use crate::database::entry::Entry;
|
use crate::database::entry::Entry;
|
||||||
use crate::database::hierarchies::{
|
use crate::database::hierarchies::{
|
||||||
resolve_path, resolve_path_cached, ResolveCache, UHierPath, UNode,
|
resolve_path, resolve_path_cached, ResolveCache, UHierPath, UNode,
|
||||||
|
@ -103,6 +105,21 @@ impl FsStore {
|
||||||
let db = db.borrow();
|
let db = db.borrow();
|
||||||
let upconnection = db.connection()?;
|
let upconnection = db.connection()?;
|
||||||
|
|
||||||
|
// Initialize types, etc...
|
||||||
|
debug!("Initializing DB types.");
|
||||||
|
upend_insert_addr!(
|
||||||
|
upconnection,
|
||||||
|
Address::Attribute(FILE_SIZE_KEY.to_string()),
|
||||||
|
IS_OF_ATTR,
|
||||||
|
TYPE_HASH_ADDRESS
|
||||||
|
)?;
|
||||||
|
upend_insert_addr!(
|
||||||
|
upconnection,
|
||||||
|
Address::Attribute(FILE_MIME_KEY.to_string()),
|
||||||
|
IS_OF_ATTR,
|
||||||
|
TYPE_HASH_ADDRESS
|
||||||
|
)?;
|
||||||
|
|
||||||
// Walk through the vault, find all paths
|
// Walk through the vault, find all paths
|
||||||
debug!("Traversing vault directory");
|
debug!("Traversing vault directory");
|
||||||
let absolute_dir_path = fs::canonicalize(&*self.path)?;
|
let absolute_dir_path = fs::canonicalize(&*self.path)?;
|
||||||
|
|
Loading…
Reference in a new issue