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.