#[cfg(feature = "gluesql-redb-storage")]
mod hello_query_builder {
use {
gluesql::{
core::query_builder::{self, Execute},
gluesql_redb_storage::RedbStorage,
prelude::{Glue, Payload, Value},
},
std::fs,
};
pub fn run() {
let redb_dir = "/tmp/gluesql";
let redb_path = format!("{redb_dir}/hello_query_builder");
fs::create_dir_all(redb_dir).unwrap();
fs::remove_file(&redb_path).unwrap_or(());
let storage = RedbStorage::new(redb_path).expect("Something went wrong!");
let mut glue = Glue::new(storage);
query_builder::table("greet")
.create_table()
.add_column("name TEXT")
.execute(&mut glue)
.expect("Execution failed");
query_builder::table("greet")
.insert()
.values(vec!["'Query Builder'"])
.execute(&mut glue)
.expect("Execution failed");
let result = query_builder::table("greet")
.select()
.project("name")
.execute(&mut glue)
.expect("Failed to execute");
let Payload::Select { labels: _, rows } = result else {
panic!("Unexpected result: {result:?}")
};
let first_row = &rows[0];
let first_value = first_row.iter().next().unwrap();
let to_greet = match first_value {
Value::Str(to_greet) => to_greet,
value => panic!("Unexpected type: {value:?}"),
};
println!("Hello {to_greet}!"); }
}
fn main() {
#[cfg(feature = "gluesql-redb-storage")]
hello_query_builder::run();
}