tried glue but found it can ONLY exec and return single strings
parent
5924d28b71
commit
8ce43b449d
File diff suppressed because it is too large
Load Diff
|
|
@ -4,3 +4,5 @@ version = "0.1.0"
|
|||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
futures = "0.3.31"
|
||||
gluesql = { version = "0.16.3", features = ["gluesql_memory_storage"] }
|
||||
|
|
|
|||
|
|
@ -1,14 +1,61 @@
|
|||
pub fn add(left: u64, right: u64) -> u64 {
|
||||
left + right
|
||||
mod main {
|
||||
use {
|
||||
gluesql::{
|
||||
gluesql_memory_storage::MemoryStorage,
|
||||
prelude::Glue,
|
||||
core::store::{GStore, GStoreMut},
|
||||
core::ast::Statement,
|
||||
}
|
||||
};
|
||||
|
||||
pub fn run() {
|
||||
let mut db = DB::new(Glue::new(MemoryStorage::default()));
|
||||
db.init().expect("db init failed");
|
||||
}
|
||||
|
||||
struct DB<T: GStore + GStoreMut> {
|
||||
db: Glue<T>,
|
||||
}
|
||||
|
||||
impl<T: GStore + GStoreMut> DB<T> {
|
||||
fn new(db: Glue<T>) -> DB<T> {
|
||||
DB{db: db}
|
||||
}
|
||||
|
||||
fn init(self: &mut DB<T>) -> Result<(), String> {
|
||||
self.exec("DROP TABLE IF EXISTS t")?;
|
||||
self.exec("DROP TABLE IF EXISTS t2")?;
|
||||
self.exec("CREATE TABLE t (id INTEGER PRIMARY KEY, k TEXT, v TEXT)")?;
|
||||
self.exec("CREATE TABLE t2 (id INTEGER PRIMARY KEY, t_id INTEGER, FOREIGN KEY (t_id) REFERENCES t (id))")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn exec(self: &mut DB<T>, q: &str) -> Result<(), String> {
|
||||
futures::executor::block_on(async {
|
||||
match self.db.execute(q).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(err.to_string())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn insert(self: &mut DB<T>, q: &str) -> Result<(), String> {
|
||||
futures::executor::block_on(async {
|
||||
match self.db.execute(q).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(err.to_string())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = add(2, 2);
|
||||
assert_eq!(result, 4);
|
||||
}
|
||||
fn mvp() {
|
||||
main::run();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue