aboutsummaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-11-30 15:47:20 +0100
committermetamuffin <metamuffin@disroot.org>2025-11-30 15:47:20 +0100
commite4584a8135584e6591bac7d5397cf227cf3cff92 (patch)
tree5f3c2bdd19bbad2a9358f8de2de7f5b6c2846ed8 /database
parent8174d129fbabd2d39323678d11d868893ddb429a (diff)
downloadjellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar
jellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar.bz2
jellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar.zst
eid fixes
Diffstat (limited to 'database')
-rw-r--r--database/src/lib.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/database/src/lib.rs b/database/src/lib.rs
index 90f596e..62bc585 100644
--- a/database/src/lib.rs
+++ b/database/src/lib.rs
@@ -7,7 +7,7 @@ pub mod search;
use anyhow::{Context, Result, anyhow, bail};
use jellycommon::{
- Node, NodeID,
+ IdentifierType, Node, NodeID,
user::{NodeUserData, User},
};
use log::info;
@@ -37,8 +37,7 @@ const T_NODE: TableDefinition<[u8; 32], Ser<Node>> = TableDefinition::new("node"
const T_NODE_CHILDREN: TableDefinition<([u8; 32], [u8; 32]), ()> =
TableDefinition::new("node_children");
const T_TAG_NODE: TableDefinition<(&str, [u8; 32]), ()> = TableDefinition::new("tag_node");
-const T_NODE_EXTERNAL_ID: TableDefinition<(&str, &str), [u8; 32]> =
- TableDefinition::new("node_external_id");
+const T_NODE_IDENTIFIER: TableDefinition<(u8, &str), [u8; 32]> = TableDefinition::new("node_ids");
const T_IMPORT_FILE_MTIME: TableDefinition<&[u8], u64> = TableDefinition::new("import_file_mtime");
const T_NODE_MTIME: TableDefinition<[u8; 32], u64> = TableDefinition::new("node_mtime");
const T_NODE_MEDIA_PATHS: TableDefinition<([u8; 32], &str), ()> =
@@ -71,7 +70,7 @@ impl Database {
txn.open_table(T_NODE)?;
txn.open_table(T_NODE_MTIME)?;
txn.open_table(T_NODE_CHILDREN)?;
- txn.open_table(T_NODE_EXTERNAL_ID)?;
+ txn.open_table(T_NODE_IDENTIFIER)?;
txn.open_table(T_NODE_MEDIA_PATHS)?;
txn.open_table(T_IMPORT_FILE_MTIME)?;
txn.commit()?;
@@ -94,10 +93,14 @@ impl Database {
Ok(None)
}
}
- pub fn get_node_external_id(&self, platform: &str, eid: &str) -> Result<Option<NodeID>> {
+ pub fn get_node_by_identifier(
+ &self,
+ ty: IdentifierType,
+ value: &str,
+ ) -> Result<Option<NodeID>> {
let txn = self.inner.begin_read()?;
- let t_node_external_id = txn.open_table(T_NODE_EXTERNAL_ID)?;
- if let Some(id) = t_node_external_id.get((platform, eid))? {
+ let t_node_external_id = txn.open_table(T_NODE_IDENTIFIER)?;
+ if let Some(id) = t_node_external_id.get((ty as u8, value))? {
Ok(Some(NodeID(id.value())))
} else {
Ok(None)
@@ -135,7 +138,7 @@ impl Database {
let mut t_node = txn.open_table(T_NODE)?;
let mut t_node_mtime = txn.open_table(T_NODE_MTIME)?;
let mut t_node_children = txn.open_table(T_NODE_CHILDREN)?;
- let mut t_node_external_id = txn.open_table(T_NODE_EXTERNAL_ID)?;
+ let mut t_node_external_id = txn.open_table(T_NODE_IDENTIFIER)?;
let mut t_import_file_mtime = txn.open_table(T_IMPORT_FILE_MTIME)?;
let mut t_node_media_paths = txn.open_table(T_NODE_MEDIA_PATHS)?;
t_node.retain(|_, _| false)?;
@@ -180,7 +183,7 @@ impl Database {
let mut t_node = txn.open_table(T_NODE)?;
let mut t_node_mtime = txn.open_table(T_NODE_MTIME)?;
let mut t_node_children = txn.open_table(T_NODE_CHILDREN)?;
- let mut t_node_external_id = txn.open_table(T_NODE_EXTERNAL_ID)?;
+ let mut t_node_external_id = txn.open_table(T_NODE_IDENTIFIER)?;
let mut t_tag_node = txn.open_table(T_TAG_NODE)?;
let mut node = t_node.get(id.0)?.map(|v| v.value().0).unwrap_or_default();
@@ -196,7 +199,7 @@ impl Database {
t_node_children.insert((parent.0, id.0), ())?;
}
for (pl, eid) in &node.identifiers {
- t_node_external_id.insert((pl.to_string().as_str(), eid.as_str()), id.0)?;
+ t_node_external_id.insert((*pl as u8, eid.as_str()), id.0)?;
}
for tag in &node.tags {
t_tag_node.insert((tag.as_str(), id.0), ())?;