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 hash_result = hash(&bytes);
|
||||
(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 {
|
||||
return Err(ErrorBadRequest(anyhow!(
|
||||
"Specify one of: `attribute`, `url`, `url_content`."
|
||||
)));
|
||||
return Err(ErrorBadRequest(
|
||||
"Specify one of: `attribute`, `url`, `url_content`, `type`.",
|
||||
));
|
||||
};
|
||||
|
||||
let mut response = HttpResponse::Ok();
|
||||
|
|
|
@ -22,4 +22,8 @@ lazy_static! {
|
|||
value: "HIER_ROOT".into(),
|
||||
};
|
||||
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 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::hierarchies::{
|
||||
resolve_path, resolve_path_cached, ResolveCache, UHierPath, UNode,
|
||||
|
@ -103,6 +105,21 @@ impl FsStore {
|
|||
let db = db.borrow();
|
||||
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
|
||||
debug!("Traversing vault directory");
|
||||
let absolute_dir_path = fs::canonicalize(&*self.path)?;
|
||||
|
|
Loading…
Reference in a new issue