use assembly_data::fdb::mem::{Database, Tables};
use mapr::Mmap;
use std::{fs::File, path::PathBuf, time::Instant};
use structopt::StructOpt;
#[derive(Debug, StructOpt)]
struct Options {
file: PathBuf,
}
fn main() -> color_eyre::Result<()> {
color_eyre::install()?;
let opt = Options::from_args();
let start = Instant::now();
let file = File::open(&opt.file)?;
let mmap = unsafe { Mmap::map(&file)? };
let buffer: &[u8] = &mmap;
let db = Database::new(buffer);
let tables: Tables<'_> = db.tables()?;
println!("#Tables: {}", tables.len());
for table in tables.iter() {
let table = table?;
let table_name = table.name();
println!("{} ({})", table_name, table.bucket_count());
for column in table.column_iter() {
let name = column.name();
println!("- {}: {:?}", name, column.value_type());
}
}
let duration = start.elapsed();
println!(
"Finished in {}.{}s",
duration.as_secs(),
duration.subsec_millis()
);
Ok(())
}