aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-client
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2023-06-15 08:17:30 +0100
committerGitHub <noreply@github.com>2023-06-15 08:17:30 +0100
commit0c75cfbfda1f991c618fcd00921ac6be99fd03f7 (patch)
tree2fe034d50fa43350ce7720984b449254dea062a9 /atuin-client
parentKey values (#1038) (diff)
downloadatuin-0c75cfbfda1f991c618fcd00921ac6be99fd03f7.zip
Add namespaces to kv store (#1052)
Diffstat (limited to 'atuin-client')
-rw-r--r--atuin-client/src/kv.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/atuin-client/src/kv.rs b/atuin-client/src/kv.rs
index 87149275..35e8852e 100644
--- a/atuin-client/src/kv.rs
+++ b/atuin-client/src/kv.rs
@@ -9,6 +9,7 @@ const KV_TAG: &str = "kv";
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct KvRecord {
+ pub namespace: String,
pub key: String,
pub value: String,
}
@@ -38,12 +39,14 @@ impl KvStore {
pub async fn set(
&self,
store: &mut (impl Store + Send + Sync),
+ namespace: &str,
key: &str,
value: &str,
) -> Result<()> {
let host_id = Settings::host_id().expect("failed to get host_id");
let record = KvRecord {
+ namespace: namespace.to_string(),
key: key.to_string(),
value: value.to_string(),
};
@@ -70,7 +73,12 @@ impl KvStore {
// TODO: setup an actual kv store, rebuild func, and do not pass the main store in here as
// well.
- pub async fn get(&self, store: &impl Store, key: &str) -> Result<Option<KvRecord>> {
+ pub async fn get(
+ &self,
+ store: &impl Store,
+ namespace: &str,
+ key: &str,
+ ) -> Result<Option<KvRecord>> {
// TODO: don't load this from disk so much
let host_id = Settings::host_id().expect("failed to get host_id");
@@ -84,7 +92,7 @@ impl KvStore {
};
let kv: KvRecord = rmp_serde::from_slice(&record.data)?;
- if kv.key == key {
+ if kv.key == key && kv.namespace == namespace {
return Ok(Some(kv));
}
@@ -92,7 +100,7 @@ impl KvStore {
record = store.get(parent.as_str()).await?;
let kv: KvRecord = rmp_serde::from_slice(&record.data)?;
- if kv.key == key {
+ if kv.key == key && kv.namespace == namespace {
return Ok(Some(kv));
}
}