diff options
author | Katharina Fey <kookie@spacekookie.de> | 2017-12-14 02:18:53 +0100 |
---|---|---|
committer | Katharina Fey <kookie@spacekookie.de> | 2017-12-14 02:18:53 +0100 |
commit | 54075ef02db9ea054000b07f9a498e560708a47a (patch) | |
tree | 5f7cbc46f527991fd818df7dfd15d6d365b80601 /src/vault/mod.rs | |
parent | ebf8595cc67c2807d6103007bdb29d01db833092 (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.rs | 14 |
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 |