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.

Re-exports

pub use chrono;
pub use sled;
pub use sqlparser;

Modules

Macros