diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-11-30 15:47:20 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-11-30 15:47:20 +0100 |
| commit | e4584a8135584e6591bac7d5397cf227cf3cff92 (patch) | |
| tree | 5f3c2bdd19bbad2a9358f8de2de7f5b6c2846ed8 /database/src | |
| parent | 8174d129fbabd2d39323678d11d868893ddb429a (diff) | |
| download | jellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar jellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar.bz2 jellything-e4584a8135584e6591bac7d5397cf227cf3cff92.tar.zst | |
eid fixes
Diffstat (limited to 'database/src')
| -rw-r--r-- | database/src/lib.rs | 23 |
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), ())?; |