use std::sync::Arc;
use clap::Parser;
use tracing_subscriber::EnvFilter;
use log::LogDb;
use log::server::{CliArgs, LogServer, LogServerConfig};
#[tokio::main]
async fn main() {
tracing_subscriber::fmt()
.with_env_filter(
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")),
)
.init();
let args = CliArgs::parse();
let log_config = args.to_log_config();
let server_config = LogServerConfig::from(&args);
tracing::info!("Opening log with config: {:?}", log_config);
let log = LogDb::open(log_config).await.expect("Failed to open log");
let server = LogServer::new(Arc::new(log), server_config);
server.run().await;
}