aboutsummaryrefslogtreecommitdiff
path: root/src/vault/mod.rs
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2017-12-14 02:18:53 +0100
committerKatharina Fey <kookie@spacekookie.de>2017-12-14 02:18:53 +0100
commit54075ef02db9ea054000b07f9a498e560708a47a (patch)
tree5f7cbc46f527991fd818df7dfd15d6d365b80601 /src/vault/mod.rs
parentebf8595cc67c2807d6103007bdb29d01db833092 (diff)
Using versions to build records and adjusting the demo to use this
A record is now a collection of versions. A version is a collection of operations. Data can be overwritten by later versions, still preserving older versions of data fields. TODO: This means we actually need an API to scrub data from the history
Diffstat (limited to '')
-rw-r--r--src/vault/mod.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/vault/mod.rs b/src/vault/mod.rs
index aef5128..c052204 100644
--- a/src/vault/mod.rs
+++ b/src/vault/mod.rs
@@ -15,7 +15,7 @@ use std::fs::File;
use std::fs;
use crypto::engine::CryptoEngine;
-use record::{Record, Payload};
+use record::{Record, Version};
use serde_json;
@@ -141,9 +141,15 @@ impl Vault {
self.records.insert(String::from(name), record);
}
- pub fn add_data(&mut self, record: &str, key: &str, data: Payload) {
- let r: &mut Record = self.records.get_mut(record).unwrap();
- r.set_data(key, data);
+ /// Get an immutable reference to a particular record
+ pub fn get_record(&self, name: &str) -> &Record {
+ return self.records.get(name).unwrap();
+ }
+
+ /// Update a specific record with a version that was created
+ pub fn update(&mut self, name: &str, version: Version) {
+ let rec: &mut Record = self.records.get_mut(name).unwrap();
+ rec.apply_version(version);
}
/// Sync current records to disk, overwriting existing files