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"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
futures = "0.3.31"
|
||||||
|
gluesql = { version = "0.16.3", features = ["gluesql_memory_storage"] }
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,53 @@
|
||||||
pub fn add(left: u64, right: u64) -> u64 {
|
mod main {
|
||||||
left + right
|
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)]
|
#[cfg(test)]
|
||||||
|
|
@ -7,8 +55,7 @@ mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn it_works() {
|
fn mvp() {
|
||||||
let result = add(2, 2);
|
main::run();
|
||||||
assert_eq!(result, 4);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue