use std::error::Error;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use dodo::prelude::*;
#[derive(Debug, Entity, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct Person {
id: Option<Uuid>,
name: String,
age: u64,
}
type PersonCollection = Collection<Person, Directory, JsonSerializer>;
fn main() -> Result<(), Box<dyn Error>> {
let mut collection = PersonCollection::new(Directory::new("./person/collection")?);
collection.clear()?;
let mut person = Person { id: None, name: "John Smith".into(), age: 42 };
collection.insert(&mut person)?;
let id = person.id.unwrap();
let mut person = collection.find(id)?;
let _persons = collection.find_all()?.filter(|person| person.age > 20).collect()?;
person.name = "Mary Smith".into();
collection.update(&person)?;
collection.delete(person.id.unwrap())?;
Ok(())
}