26 lines
708 B
Rust
26 lines
708 B
Rust
use crate::database::latest::trees::category;
|
|
use crate::status_json::StatusJson;
|
|
use bincode::{deserialize, serialize};
|
|
use std::collections::HashMap;
|
|
|
|
pub fn get_category(
|
|
tree: &sled::Tree,
|
|
key: &category::K,
|
|
) -> Result<Option<category::V>, StatusJson> {
|
|
Ok(match tree.get(serialize(key)?)? {
|
|
Some(raw) => Some(deserialize(&raw)?),
|
|
None => None,
|
|
})
|
|
}
|
|
|
|
pub fn get_all_categories(
|
|
tree: &sled::Tree,
|
|
) -> Result<HashMap<category::K, category::V>, StatusJson> {
|
|
Ok(tree
|
|
.iter()
|
|
.map(|result| {
|
|
result.map(|(k, v)| deserialize(&k).and_then(|k| deserialize(&v).map(|v| (k, v))))
|
|
})
|
|
.collect::<Result<Result<_, _>, _>>()??)
|
|
}
|