Crates.io | miniorm-example-transactions |
lib.rs | miniorm-example-transactions |
version | 0.3.0 |
source | src |
created_at | 2024-03-15 17:54:54.816747 |
updated_at | 2024-03-15 18:30:17.509986 |
description | a *very* simple ORM built on top of sqlx |
homepage | https://github.com/meuter/miniorm-rs |
repository | https://github.com/meuter/miniorm-rs |
max_upload_size | |
id | 1174998 |
size | 61,142 |
The miniorm
crate provides a very simple
ORM
on top of sqlx
.
sqlx
already provides a
FromRow
trait
that can be derived automatically in order to convert a row from the
database into an object. Howver, there is no corresponding ToRow
macro
that would allow convert an object back into a row to be inserted into
the database.
This is where miniorm
comes in. It provides a trait Schema
that can also be automatically derived to describe the schema
of the table that should be used for a given entity (i.e. struct
).
Any struct that implements the FromRow
and Schema
traits can be used
to create a CrudStore
that provide the so-called "CRUD" operations:
At the moment, miniorm
only supports the postgres backend. Other backends
could be provided in the future.
use sqlx::FromRow;
use miniorm::Schema;
#[derive(Debug, Clone, Eq, PartialEq, FromRow, Schema)]
struct Todo {
#[column(TEXT NOT NULL)]
description: String,
#[column(BOOLEAN NOT NULL DEFAULT false)]
done: bool,
}
For more complete examples, see:
JSONB
column
using serde_json
.