derive-sql
This project define an approach to interact with SQL database in Rust [currently only SQLite supported].
A trait Sqlable is defined in the crate with the following functions to interact with the database:
countto provide a count of the number of items in the table.selectto return an array of the items in the table.insertto insert a new item in the table.updateto update an existing item(s) with the values of the provided item.deleteto delete items in the table.delete_tableto drop the table.
A procedural macro DeriveSqlite is available under the optional feature sqlite. The procedural macro can
be applied to a struct with named fields to implement the Sqlable trait.
How to Use
The procedural macro is currently tied to rusqlite that needs to be added to your Cargo.toml. If not added, your
project will not compile.
To use this project procedural macro, add the following in your Cargo.toml:
[dependencies]
derive-sql = { version = "0.5", features = [ 'sqlite' ] }
And annotate your struct as follows:
use derive_sql::{Sqlable, DeriveSqlite};
#[derive(DeriveSqlite)]
struct Person {
id: 32,
name: String,
}
And use the generated functions:
- Review the documentation pages;
- Generate documentation for the generated functions using
cargo doc --open
Checkout the example tests using in-memory SQLite database in the extras/derive-sql-sqlite/examples folder:
cargo run --example simple --features sqlite
cargo run --example attributes --features sqlite
Checkout the example tests using a MySQL database in the extras/derive-sql-mysql/examples folder:
cargo run --example simple_mysql --features mysql
cargo run --example attributes_mysql --features mysql
License
This project is licensed under MIT license.