#[derive(DerivePartialModel)]
{
// Attributes available to this derive:
#[sea_orm]
}
Expand description
The DerivePartialModel derive macro will implement sea_orm::PartialModelTrait for simplify partial model queries.
ยงUsage
use sea_orm::{entity::prelude::*, sea_query::Expr, DerivePartialModel, FromQueryResult};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Deserialize, Serialize)]
#[sea_orm(table_name = "posts")]
pub struct Model {
#[sea_orm(primary_key)]
pub id: i32,
pub title: String,
#[sea_orm(column_type = "Text")]
pub text: String,
}
#[derive(Debug, FromQueryResult, DerivePartialModel)]
#[sea_orm(entity = "Entity")]
struct SelectResult {
title: String,
#[sea_orm(from_col = "text")]
content: String,
#[sea_orm(from_expr = "Expr::val(1).add(1)")]
sum: i32,
}If all fields in the partial model is from_expr, the specifying the entity can be skipped.
use sea_orm::{entity::prelude::*, sea_query::Expr, DerivePartialModel, FromQueryResult};
#[derive(Debug, FromQueryResult, DerivePartialModel)]
struct SelectResult {
#[sea_orm(from_expr = "Expr::val(1).add(1)")]
sum: i32,
}It is possible to nest structs deriving FromQueryResult and DerivePartialModel, including
optionally, which is useful for specifying columns from tables added via left joins, as well as
when building up complicated queries programmatically.
use sea_orm::{entity::prelude::*, sea_query::Expr, DerivePartialModel, FromQueryResult};
#[derive(Debug, FromQueryResult, DerivePartialModel)]
struct Inner {
#[sea_orm(from_expr = "Expr::val(1).add(1)")]
sum: i32,
}
#[derive(Debug, FromQueryResult, DerivePartialModel)]
struct Outer {
#[sea_orm(nested)]
inner: Inner,
#[sea_orm(nested)]
inner_opt: Option<Inner>,
}A field cannot have attributes from_col, from_expr or nested at the same time.
Or, it will result in a compile error.
โ
use sea_orm::{entity::prelude::*, FromQueryResult, DerivePartialModel, sea_query::Expr};
#[derive(Debug, FromQueryResult, DerivePartialModel)]
#[sea_orm(entity = "Entity")]
struct SelectResult {
#[sea_orm(from_expr = "Expr::val(1).add(1)", from_col = "foo")]
sum: i32
}