lb_rs/model/
core_tree.rs

1use crate::model::file_like::FileLike;
2use crate::model::tree_like::{TreeLike, TreeLikeMut};
3use serde::Serialize;
4use uuid::Uuid;
5
6use super::errors::{LbResult, Unexpected};
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) -> Vec<Uuid> {
15        self.get().keys().copied().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) -> LbResult<Option<Self::F>> {
28        db_rs::LookupTable::insert(self, *f.id(), f).map_unexpected()
29    }
30
31    fn remove(&mut self, id: Uuid) -> LbResult<Option<Self::F>> {
32        db_rs::LookupTable::remove(self, &id).map_unexpected()
33    }
34
35    fn clear(&mut self) -> LbResult<()> {
36        db_rs::LookupTable::clear(self).map_unexpected()
37    }
38}