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::{ use crate::{
ActiveModelTrait, ColumnTrait, FromQueryResult, Insert, ModelTrait, OneOrManyActiveModel, ActiveModelTrait, ColumnTrait, FromQueryResult, Insert, ModelTrait, OneOrManyActiveModel,
PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, RelationBuilder, RelationTrait, RelationType, PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, RelationBuilder, RelationTrait, RelationType,
Select, Select, Update,
}; };
use sea_query::{Iden, IntoValueTuple}; use sea_query::{Iden, IntoValueTuple};
use std::fmt::Debug; use std::fmt::Debug;
@ -22,18 +22,18 @@ pub trait EntityTrait: EntityName {
type PrimaryKey: PrimaryKeyTrait + PrimaryKeyToColumn<Column = Self::Column>; 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 where
R: EntityTrait, 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 where
R: EntityTrait, R: EntityTrait,
{ {
RelationBuilder::new(RelationType::HasMany, Self::default(), entity) RelationBuilder::new(RelationType::HasMany, Self::default(), related)
} }
/// ``` /// ```
@ -113,7 +113,7 @@ pub trait EntityTrait: EntityName {
/// Insert many /// Insert many
/// ``` /// ```
/// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder};
/// ///
/// let apple = cake::ActiveModel { /// let apple = cake::ActiveModel {
/// name: Val::set("Apple Pie".to_owned()), /// name: Val::set("Apple Pie".to_owned()),
/// ..Default::default() /// ..Default::default()
@ -166,7 +166,7 @@ pub trait EntityTrait: EntityName {
/// ``` /// ```
/// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder};
/// ///
/// let apple = cake::ActiveModel { /// let apple = cake::ActiveModel {
/// name: Val::set("Apple Pie".to_owned()), /// name: Val::set("Apple Pie".to_owned()),
/// ..Default::default() /// ..Default::default()
@ -189,4 +189,26 @@ pub trait EntityTrait: EntityName {
{ {
Insert::new().many(models) 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)
}
} }