2 unstable releases
0.3.0 | Mar 15, 2024 |
---|---|
0.1.0 | Mar 15, 2024 |
#2877 in Database interfaces
56KB
724 lines
miniorm
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:
- (C)reate
- (R)ead
- (U)pdate
- (D)elete
At the moment, miniorm
only supports the postgres backend. Other backends
could be provided in the future.
Examples
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:
- todo example for a simple example.
- stock transaction example
for a more complex example, where certain fields are stored as
JSONB
column usingserde_json
.
Dependencies
~54MB
~1M SLoC