feat: add unwrap_or to entity, rewrite unwrap
This commit is contained in:
@@ -46,6 +46,24 @@ impl O {
|
||||
.collect();
|
||||
items
|
||||
}
|
||||
pub fn list_by_class_and_attribute<T>(
|
||||
&self,
|
||||
class: &str,
|
||||
attribute: &str,
|
||||
value: impl Into<Value> + Clone,
|
||||
) -> Vec<T>
|
||||
where
|
||||
T: From<Entity>,
|
||||
{
|
||||
let items: Vec<T> = self
|
||||
.items
|
||||
.values()
|
||||
.filter(|item| item.class == class)
|
||||
.filter(|item| item.value_of(attribute) == Some(&value.clone().into()))
|
||||
.map(|item| T::from(item.clone()))
|
||||
.collect();
|
||||
items
|
||||
}
|
||||
pub fn persist(&self) {
|
||||
let path = path::Path::new(&self.path);
|
||||
sqlite::persist::catalog(path, self);
|
||||
|
||||
@@ -59,7 +59,16 @@ impl O {
|
||||
where
|
||||
T: From<Value>,
|
||||
{
|
||||
let value = self.value_of(id).unwrap();
|
||||
T::from(value.clone())
|
||||
self.value_of(id)
|
||||
.map(|value| T::from(value.clone()))
|
||||
.unwrap()
|
||||
}
|
||||
pub fn unwrap_or<T>(&self, id: &str, default: T) -> T
|
||||
where
|
||||
T: From<Value>,
|
||||
{
|
||||
self.value_of(id)
|
||||
.map(|value| T::from(value.clone()))
|
||||
.unwrap_or(default)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user