use block_db::{batch::BatchResult, BlockDB};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut block_db = BlockDB::open("./db", None).await?;
let block_key_one = block_db.write(b"Hello").await?;
let freed_bytes = block_db.free(&block_key_one).await?;
println!("{freed_bytes}");
let block_key_two = block_db.write(b"World!").await?;
let BatchResult {
freed_bytes,
new_block_keys,
} = block_db
.batch(vec![b"Hallo", b"Welt!"], vec![&block_key_two])
.await?;
println!("{freed_bytes}");
println!("{:?}", block_db.read(&block_key_one).await?);
println!("{:?}", block_db.read(&block_key_two).await?);
println!("{:?}", block_db.read(&new_block_keys[0]).await?);
println!("{:?}", block_db.read(&new_block_keys[1]).await?);
block_db.compact_data_files().await?;
Ok(())
}