1 unstable release
0.1.0 | Apr 5, 2023 |
---|
#25 in #sea-orm
11KB
157 lines
sea-orm-verify
Provides Verify
derive macro.
#[derive(DeriveEntityModel, Verify)]
#[derive(Debug, Clone, PartialEq)]
#[sea_orm(table_name = "task")]
pub struct Model {
#[sea_orm(primary_key)]
pub id: u32,
pub finish_at: Option<DateTime>,
}
generates
impl Model {
async fn _verify() {
sqlx::query_as!(Self, "SELECT id, finish_at FROM task");
}
}
this will cause sqlx query_as macro to verify the struct fields with the database at compile time needs to have setup DATABASE_URL for example using .env or sqlx offline data. Please refer to docs.rs/sqlx
it also needs sqlx as a dependency in your project, for example for Postgres in Cargo.toml it needs:
sqlx = { version = "0.6", features = ["runtime-tokio-rustls", "postgres"] }
Please be aware that sqlx and sea-orm column mapping might be not 100% compatible and this check might fail to catch some column type mismatch you still have
Supported struct attributes inside #[sea_orm()
:
table_name
- gets the database table nameschema_name
- gets the database schema name (for Postgres)
Supported field attributes inside #[verify()]
:
type_override
- override sqlx type like described in Force a Different/Custom Type, useful for custom enums. Enum need to annotated with#[derive(sqlx::Type)
and#[sqlx(type_name = "integer")]
not_null
- forces the column to be NOT NULL, useful for example for db views where sqlx get the nullable wrong.null
- same asnot_null
but forces the column to be NULL
Dependencies
~270–720KB
~17K SLoC