use std::env;
use dotenvy::dotenv;
use quantoxide::{
Database,
error::Result,
sync::{SyncConfig, SyncEngine, SyncMode},
tui::{SyncTui, TuiConfig},
};
#[tokio::main]
async fn main() -> Result<()> {
dotenv().ok();
let db_url = env::var("DATABASE_URL").map_err(|_| "`DATABASE_URL` is not set")?;
println!("Initializing database...");
let db = Database::new(&db_url).await?;
println!("Database ready. Initializing `SyncEngine`...");
let config = SyncConfig::default();
let sync_engine = SyncEngine::new(config, db, SyncMode::Backfill)?;
println!("Initialization OK. Launching `SyncTui`...");
let sync_tui = SyncTui::launch(TuiConfig::default(), None).await?;
sync_tui.couple(sync_engine)?;
let final_status = sync_tui.until_stopped().await;
println!("`SyncTui` status: {final_status}");
Ok(())
}