use anyhow::anyhow;
use parity_scale_codec::{Decode, Encode};
use runtime::{timestamp::Timestamp, OuterVerifier};
use sled::Db;
use tuxedo_core::types::Output;
const TIMESTAMP: &str = "timestamp";
pub(crate) fn apply_transaction(db: &Db, output: &Output<OuterVerifier>) -> anyhow::Result<()> {
let timestamp = output.payload.extract::<Timestamp>()?.time;
let timestamp_tree = db.open_tree(TIMESTAMP)?;
timestamp_tree.insert([0], timestamp.encode())?;
Ok(())
}
pub(crate) fn get_timestamp(db: &Db) -> anyhow::Result<u64> {
let timestamp_tree = db.open_tree(TIMESTAMP)?;
let timestamp = timestamp_tree
.get([0])?
.ok_or_else(|| anyhow!("Could not find timestamp in database."))?;
u64::decode(&mut ×tamp[..])
.map_err(|_| anyhow!("Could not decode timestamp from database."))
}