diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-05 18:20:49 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-05 18:20:49 +0100 |
commit | f2fa92e701b8da8e9d2e091ade21784623710374 (patch) | |
tree | 87d4fe19042fdabad4771967f89ea9cb436bdb1c /shared/src/store.rs | |
parent | 72c23eb57070ab859ffde4f989aa85f7f2eedcf8 (diff) | |
download | weareserver-f2fa92e701b8da8e9d2e091ade21784623710374.tar weareserver-f2fa92e701b8da8e9d2e091ade21784623710374.tar.bz2 weareserver-f2fa92e701b8da8e9d2e091ade21784623710374.tar.zst |
a
Diffstat (limited to 'shared/src/store.rs')
-rw-r--r-- | shared/src/store.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/shared/src/store.rs b/shared/src/store.rs index 83f1a25..44e5e3d 100644 --- a/shared/src/store.rs +++ b/shared/src/store.rs @@ -1,9 +1,10 @@ use crate::packets::Resource; use anyhow::Result; use redb::{Database, TableDefinition}; +use sha2::{Digest, Sha256}; use std::path::Path; -const T_ENTRIES: TableDefinition<u128, &[u8]> = TableDefinition::new("e"); +const T_ENTRIES: TableDefinition<[u8; 32], &[u8]> = TableDefinition::new("e"); pub struct ResourceStore { db: Database, @@ -22,12 +23,19 @@ impl ResourceStore { None => Ok(None), } } - pub fn set(&self, key: Resource, value: &[u8]) -> Result<()> { + pub fn set(&self, value: &[u8]) -> Result<()> { + let key = sha256(value); let txn = self.db.begin_write()?; let mut ent = txn.open_table(T_ENTRIES)?; - ent.insert(key.0, value)?; + ent.insert(key, value)?; drop(ent); txn.commit()?; Ok(()) } } + +pub fn sha256(x: &[u8]) -> [u8; 32] { + let mut hasher = Sha256::new(); + hasher.update(x); + hasher.finalize().into() +} |