basalt-db 0.1.6

CLI-first local SQL workspaces for structured data and coding agents
Documentation
use std::time::Instant;

use basalt::{Database, db::StatementResult};

fn main() {
    let database = Database::in_memory();
    database
        .execute_sql("CREATE TABLE measurements (id INTEGER PRIMARY KEY, value REAL)")
        .unwrap();
    let start = Instant::now();
    for id in 0..10_000 {
        database
            .execute_sql(&format!(
                "INSERT INTO measurements VALUES ({id}, {value})",
                value = id as f64 / 10.0
            ))
            .unwrap();
    }
    let insert_elapsed = start.elapsed();
    let start = Instant::now();
    let result = database
        .execute_sql("SELECT COUNT(*), SUM(value) FROM measurements WHERE id >= 5000")
        .unwrap();
    let query_elapsed = start.elapsed();
    let rows = match &result[0] {
        StatementResult::Select { rows, .. } => rows.len(),
        _ => 0,
    };
    println!(
        "Basalt: inserted 10000 rows in {:?}; aggregate query ({rows} row) in {:?}",
        insert_elapsed, query_elapsed
    );
}