diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-29 23:09:54 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-29 23:09:54 +0100 |
commit | 59825d68efa1077382fd6acac73f75ae9dc3680a (patch) | |
tree | 5f948eddf7b4c85f245359c35c653ab8768ba8f4 /base | |
parent | 8099c51e56b6d253c05cac9c235f52027ad736fa (diff) | |
download | jellything-59825d68efa1077382fd6acac73f75ae9dc3680a.tar jellything-59825d68efa1077382fd6acac73f75ae9dc3680a.tar.bz2 jellything-59825d68efa1077382fd6acac73f75ae9dc3680a.tar.zst |
mtime based incremental import
Diffstat (limited to 'base')
-rw-r--r-- | base/src/database.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/base/src/database.rs b/base/src/database.rs index 1f3efbf..a213a40 100644 --- a/base/src/database.rs +++ b/base/src/database.rs @@ -29,7 +29,7 @@ const T_USER_NODE: TableDefinition<(&str, [u8; 32]), Ser<NodeUserData>> = TableDefinition::new("user_node"); const T_INVITE: TableDefinition<&str, ()> = TableDefinition::new("invite"); const T_NODE: TableDefinition<[u8; 32], Ser<Node>> = TableDefinition::new("node"); -const T_IMPORT_MTIME: TableDefinition<&[u8], u64> = TableDefinition::new("import-mtime"); +const T_IMPORT_FILE_MTIME: TableDefinition<&[u8], u64> = TableDefinition::new("import_file_mtime"); #[derive(Clone)] pub struct Database { @@ -56,6 +56,7 @@ impl Database { drop(txn.open_table(T_USER)?); drop(txn.open_table(T_USER_NODE)?); drop(txn.open_table(T_NODE)?); + drop(txn.open_table(T_IMPORT_FILE_MTIME)?); txn.commit()?; } @@ -284,6 +285,25 @@ impl Database { Ok(()) } + pub fn get_import_file_mtime(&self, path: &Path) -> Result<Option<u64>> { + let bytes = path.as_os_str().as_encoded_bytes(); + let txn = self.inner.begin_read()?; + let table = txn.open_table(T_IMPORT_FILE_MTIME)?; + if let Some(v) = table.get(bytes)? { + Ok(Some(v.value())) + } else { + Ok(None) + } + } + pub fn set_import_file_mtime(&self, path: &Path, mtime: u64) -> Result<()> { + let bytes = path.as_os_str().as_encoded_bytes(); + let txn = self.inner.begin_write()?; + let mut table = txn.open_table(T_IMPORT_FILE_MTIME)?; + table.insert(bytes, mtime)?; + drop(table); + txn.commit()?; + Ok(()) + } } pub struct NodeIndex { |