Crate gluesql[−][src]
Expand description
GlueSQL
gluesql is a SQL database library written in Rust.
It provides a parser (sqlparser-rs), execution layer,
and optional storages (sled or memory) packaged into a single library.
Developers can choose to use GlueSQL to build their own SQL database,
or as an embedded SQL database using the default storage engine.
Examples
use gluesql::prelude::*;
#[cfg(feature = "sled-storage")]
fn main() {
let storage = SledStorage::new("data/doc-db").unwrap();
let mut glue = Glue::new(storage);
let sqls = vec![
"DROP TABLE IF EXISTS Glue;",
"CREATE TABLE Glue (id INTEGER);",
"INSERT INTO Glue VALUES (100);",
"INSERT INTO Glue VALUES (200);",
"SELECT * FROM Glue WHERE id > 100;",
];
for sql in sqls {
let output = glue.execute(sql).unwrap();
println!("{:?}", output)
}
}
#[cfg(not(feature = "sled-storage"))]
fn main() {}Custom Storage
To get started, all you need to implement for gluesql is implementing three traits
(two for functions, one running tests).
There are also three optional traits (AlterTable, Index, IndexMut, and Transaction),
whether implementing it or not is all up to you.
Store traits
Optional Store traits
Trait to run integration tests
Tests
gluesql provides integration tests as a module.
Developers who wants to make their own custom storages can import and run those tests.
/tests/ might look quite empty, but actual test cases exist in src/tests/.
Example code to see,
After you implement Tester trait, the only thing you need to do is calling generate_tests! macro.