lockbook_shared/
core_tree.rs1use crate::file_like::FileLike;
2use crate::tree_like::{TreeLike, TreeLikeMut};
3use crate::SharedResult;
4use serde::Serialize;
5use std::collections::HashSet;
6use uuid::Uuid;
7
8impl<F> TreeLike for db_rs::LookupTable<Uuid, F>
9where
10 F: FileLike + Serialize,
11{
12 type F = F;
13
14 fn ids(&self) -> HashSet<&Uuid> {
15 self.get().keys().collect()
16 }
17
18 fn maybe_find(&self, id: &Uuid) -> Option<&Self::F> {
19 self.get().get(id)
20 }
21}
22
23impl<F> TreeLikeMut for db_rs::LookupTable<Uuid, F>
24where
25 F: FileLike + Serialize,
26{
27 fn insert(&mut self, f: Self::F) -> SharedResult<Option<Self::F>> {
28 Ok(db_rs::LookupTable::insert(self, *f.id(), f)?)
29 }
30
31 fn remove(&mut self, id: Uuid) -> SharedResult<Option<Self::F>> {
32 Ok(db_rs::LookupTable::remove(self, &id)?)
33 }
34
35 fn clear(&mut self) -> SharedResult<()> {
36 Ok(db_rs::LookupTable::clear(self)?)
37 }
38}