use std::time::SystemTime;
use pliantdb::local::Storage;
use pliantdb_core::{
connection::Connection,
schema::{collection, Collection, Schema},
};
use pliantdb_local::Configuration;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct Message {
pub timestamp: SystemTime,
pub contents: String,
}
impl Collection for Message {
fn id() -> collection::Id {
collection::Id::from("messages")
}
fn define_views(_schema: &mut Schema) {}
}
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let db = Storage::<Message>::open_local("basic.pliantdb", &Configuration::default()).await?;
let messages = db.collection::<Message>()?;
let new_doc_info = messages
.push(&Message {
contents: String::from("Hello, World!"),
timestamp: SystemTime::now(),
})
.await?;
let message = messages
.get(new_doc_info.id)
.await?
.expect("couldn't retrieve stored item")
.contents::<Message>()?;
println!(
"Inserted message '{}' with id {}",
message.contents, new_doc_info.id
);
Ok(())
}