Update Entity

This commit is contained in:
Chris Tsang 2021-06-03 12:36:30 +08:00
parent 4bc7e5da33
commit c482b0cbc6

View File

@ -1,7 +1,7 @@
use crate::{
ActiveModelTrait, ColumnTrait, FromQueryResult, Insert, ModelTrait, OneOrManyActiveModel,
PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, RelationBuilder, RelationTrait, RelationType,
Select,
Select, Update,
};
use sea_query::{Iden, IntoValueTuple};
use std::fmt::Debug;
@ -22,18 +22,18 @@ pub trait EntityTrait: EntityName {
type PrimaryKey: PrimaryKeyTrait + PrimaryKeyToColumn<Column = Self::Column>;
fn has_one<R>(entity: R) -> RelationBuilder<Self, R>
fn has_one<R>(related: R) -> RelationBuilder<Self, R>
where
R: EntityTrait,
{
RelationBuilder::new(RelationType::HasOne, Self::default(), entity)
RelationBuilder::new(RelationType::HasOne, Self::default(), related)
}
fn has_many<R>(entity: R) -> RelationBuilder<Self, R>
fn has_many<R>(related: R) -> RelationBuilder<Self, R>
where
R: EntityTrait,
{
RelationBuilder::new(RelationType::HasMany, Self::default(), entity)
RelationBuilder::new(RelationType::HasMany, Self::default(), related)
}
/// ```
@ -189,4 +189,26 @@ pub trait EntityTrait: EntityName {
{
Insert::new().many(models)
}
/// ```
/// use sea_orm::{entity::*, query::*, tests_cfg::fruit, sea_query::PostgresQueryBuilder};
///
/// let orange = fruit::ActiveModel {
/// id: Val::set(1),
/// name: Val::set("Orange".to_owned()),
/// ..Default::default()
/// };
/// assert_eq!(
/// fruit::Entity::update(orange)
/// .build(PostgresQueryBuilder)
/// .to_string(),
/// r#"UPDATE "fruit" SET "name" = 'Orange' WHERE "fruit"."id" = 1"#,
/// );
/// ```
fn update<A>(model: A) -> Update<A>
where
A: ActiveModelTrait<Entity = Self>,
{
Update::new(model)
}
}