17 releases (11 breaking)
0.12.1 | Aug 26, 2024 |
---|---|
0.11.3 | Jul 22, 2024 |
0.10.0 | Jun 9, 2024 |
0.8.1 | Mar 18, 2024 |
0.2.1 | Nov 19, 2022 |
#236 in Database interfaces
37 downloads per month
Used in 3 crates
135KB
2.5K
SLoC
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:
count
to provide a count of the number of items in the table.select
to return an array of the items in the table.insert
to insert a new item in the table.update
to update an existing item(s) with the values of the provided item.delete
to delete items in the table.delete_table
to 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.
Dependencies
~2–17MB
~240K SLoC