aurora-db 0.6.2

A lightweight, real-time embedded database with built-in PubSub, reactive queries, background workers, and intelligent caching.
Documentation
#[cfg(any(feature = "http", feature = "binary"))]
fn setup_database() -> std::io::Result<Arc<Aurora>> {
    let db_path = "aurora_data";

    let exists = std::path::Path::new(db_path).exists();

    // Open existing database or create new one
    let db = Arc::new(
        Aurora::open(db_path)
            .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))?,
    );

    if exists {
        println!(" Opened existing database at '{}'", db_path);
    } else {
        println!(" Created new database at '{}'", db_path);
    }

    Ok(db)
}

#[cfg(feature = "http")]
#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let db = setup_database()?;
    println!(" Running in HTTP mode.");

    #[cfg(feature = "binary")]
    {
        use aurora_db::network::server::BincodeServer;
        let bincode_db = db.clone();
        tokio::spawn(async move {
            let server = BincodeServer::new(bincode_db, "127.0.0.1:7878");
            println!("Starting Bincode server at 127.0.0.1:7878");
            if let Err(e) = server.run().await {
                eprintln!("Bincode server failed: {}", e);
            }
        });
    }

    use aurora_db::network::http_server::run_http_server;
    println!("Starting HTTP server at http://127.0.0.1:7879");
    run_http_server(db, "127.0.0.1:7879").await
}

#[cfg(not(feature = "http"))]
#[tokio::main]
async fn main() -> std::io::Result<()> {
    #[cfg(feature = "binary")]
    {
        let db = setup_database()?;
        println!("Running in Binary-only mode.");

        use aurora_db::network::server::BincodeServer;
        let server = BincodeServer::new(db, "127.0.0.1:7878");
        println!("Starting Bincode server at 127.0.0.1:7878");

        if let Err(e) = server.run().await {
            eprintln!("Bincode server failed: {}", e);
        }
    }

    #[cfg(not(any(feature = "http", feature = "binary")))]
    {
        println!("No server features enabled.");
        println!("To run a server, build with a feature flag, e.g.:");
        println!("  cargo run --bin aurora-db --features http");
        println!("  cargo run --bin aurora-db --features binary");
        println!("  cargo run --bin aurora-db --features full");
    }

    Ok(())
}