#[cfg(feature = "gluesql_sled_storage")]
mod hello_ast_builder {
use {
gluesql::{
core::ast_builder::{self, Execute},
gluesql_sled_storage::SledStorage,
prelude::{Glue, Payload, Value},
},
std::fs,
};
pub async fn run() {
let sled_dir = "/tmp/gluesql/hello_ast_builder";
fs::remove_dir_all(sled_dir).unwrap_or(());
let storage = SledStorage::new(sled_dir).expect("Something went wrong!");
let mut glue = Glue::new(storage);
ast_builder::table("greet")
.create_table()
.add_column("name TEXT")
.execute(&mut glue)
.await
.expect("Execution failed");
ast_builder::table("greet")
.insert()
.values(vec!["'AST Builder'"])
.execute(&mut glue)
.await
.expect("Execution failed");
let result = ast_builder::table("greet")
.select()
.project("name")
.execute(&mut glue)
.await
.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_sled_storage")]
futures::executor::block_on(hello_ast_builder::run());
}