magnumdb 0.4.8

High-performance embeddable database engine in Rust with B+ Tree storage, WAL durability, Volcano query engine, and Postgres wire protocol support.
Documentation
use magnumdb::sql::{Executor, Parser};
use magnumdb::{Config, Database};
use std::io::{self, Write};

fn main() -> anyhow::Result<()> {
    let config = Config::default().with_path("./magnum_sql_data");
    let mut db = Database::open(config)?;
    let mut executor = Executor::new(&mut db);

    println!("MagnumDB SQL Shell");
    println!("Type 'exit' or 'quit' to exit.");

    loop {
        print!("magnum> ");
        io::stdout().flush()?;

        let mut input = String::new();
        if io::stdin().read_line(&mut input).is_err() {
            break;
        }

        let input = input.trim();
        if input.is_empty() {
            continue;
        }

        if input.eq_ignore_ascii_case("exit") || input.eq_ignore_ascii_case("quit") {
            break;
        }

        match Parser::parse(input) {
            Ok(stmt) => match executor.execute(stmt) {
                Ok(output) => println!("{}", output),
                Err(e) => println!("Error: {}", e),
            },
            Err(e) => println!("{}", e),
        }
    }

    Ok(())
}