summaryrefslogtreecommitdiff
path: root/src/indexedstore.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-06-04 06:35:14 +0000
committerLars Wirzenius <liw@liw.fi>2021-06-04 06:35:14 +0000
commitf2a274ee1291531c1154176bca5b9a47e9c234bd (patch)
tree6721b515739c6e5f9236ffd6f4ecc2dfecc471d2 /src/indexedstore.rs
parentcb33088dbedf4b772013f83b8226047cc4355dd2 (diff)
parent9c2590d2428f0d3de882686ec2ec5832e7123c62 (diff)
downloadobnam2-f2a274ee1291531c1154176bca5b9a47e9c234bd.tar.gz
Merge branch 'aead' into 'main'
add encryption of individual chunks Closes #110 See merge request larswirzenius/obnam!146
Diffstat (limited to 'src/indexedstore.rs')
-rw-r--r--src/indexedstore.rs31
1 files changed, 4 insertions, 27 deletions
diff --git a/src/indexedstore.rs b/src/indexedstore.rs
index 7f67a1f..b05cfba 100644
--- a/src/indexedstore.rs
+++ b/src/indexedstore.rs
@@ -1,9 +1,8 @@
-use crate::chunk::{DataChunk, GenerationChunk, GenerationChunkError};
+use crate::chunk::{DataChunk, GenerationChunkError};
use crate::chunkid::ChunkId;
use crate::chunkmeta::ChunkMeta;
use crate::index::{Index, IndexError};
use crate::store::{Store, StoreError};
-use std::collections::HashSet;
use std::path::Path;
/// A store for chunks and their metadata.
@@ -40,10 +39,10 @@ impl IndexedStore {
Ok(Self { store, index })
}
- pub fn save(&mut self, meta: &ChunkMeta, chunk: &DataChunk) -> IndexedResult<ChunkId> {
+ pub fn save(&mut self, chunk: &DataChunk) -> IndexedResult<ChunkId> {
let id = ChunkId::new();
- self.store.save(&id, meta, chunk)?;
- self.insert_meta(&id, meta)?;
+ self.store.save(&id, chunk)?;
+ self.insert_meta(&id, chunk.meta())?;
Ok(id)
}
@@ -68,28 +67,6 @@ impl IndexedStore {
Ok(self.index.find_generations()?)
}
- pub fn find_file_chunks(&self) -> IndexedResult<Vec<ChunkId>> {
- let gen_ids = self.find_generations()?;
-
- let mut sql_chunks: HashSet<ChunkId> = HashSet::new();
- for id in gen_ids {
- let gen_chunk = self.store.load(&id)?;
- let gen = GenerationChunk::from_data_chunk(&gen_chunk)?;
- for sqlite_chunk_id in gen.chunk_ids() {
- sql_chunks.insert(sqlite_chunk_id.clone());
- }
- }
-
- let all_chunk_ids = self.index.all_chunks()?;
- let file_chunks = all_chunk_ids
- .iter()
- .filter(|id| !sql_chunks.contains(id))
- .cloned()
- .collect();
-
- Ok(file_chunks)
- }
-
pub fn remove(&mut self, id: &ChunkId) -> IndexedResult<()> {
self.index.remove_meta(id)?;
self.store.delete(id)?;