Insert Default - Inserting ActiveModel
with all attributes NotSet
(#432)
* feat: apply alias on `ColumnRef::SchemaTableColumn` * build: update sea-query dependency * feat: insert default * Use sea-query 0.21 Co-authored-by: Billy Chan <ccw.billy.123@gmail.com>
This commit is contained in:
parent
09e2ac841a
commit
33a87d79b1
13
tests/common/features/insert_default.rs
Normal file
13
tests/common/features/insert_default.rs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
|
||||||
|
#[sea_orm(table_name = "insert_default")]
|
||||||
|
pub struct Model {
|
||||||
|
#[sea_orm(primary_key)]
|
||||||
|
pub id: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||||
|
pub enum Relation {}
|
||||||
|
|
||||||
|
impl ActiveModelBehavior for ActiveModel {}
|
@ -2,6 +2,7 @@ pub mod active_enum;
|
|||||||
pub mod active_enum_child;
|
pub mod active_enum_child;
|
||||||
pub mod applog;
|
pub mod applog;
|
||||||
pub mod byte_primary_key;
|
pub mod byte_primary_key;
|
||||||
|
pub mod insert_default;
|
||||||
pub mod metadata;
|
pub mod metadata;
|
||||||
pub mod repository;
|
pub mod repository;
|
||||||
pub mod satellite;
|
pub mod satellite;
|
||||||
@ -13,6 +14,7 @@ pub use active_enum::Entity as ActiveEnum;
|
|||||||
pub use active_enum_child::Entity as ActiveEnumChild;
|
pub use active_enum_child::Entity as ActiveEnumChild;
|
||||||
pub use applog::Entity as Applog;
|
pub use applog::Entity as Applog;
|
||||||
pub use byte_primary_key::Entity as BytePrimaryKey;
|
pub use byte_primary_key::Entity as BytePrimaryKey;
|
||||||
|
pub use insert_default::Entity as InsertDefault;
|
||||||
pub use metadata::Entity as Metadata;
|
pub use metadata::Entity as Metadata;
|
||||||
pub use repository::Entity as Repository;
|
pub use repository::Entity as Repository;
|
||||||
pub use satellite::Entity as Satellite;
|
pub use satellite::Entity as Satellite;
|
||||||
|
@ -37,6 +37,7 @@ pub async fn create_tables(db: &DatabaseConnection) -> Result<(), DbErr> {
|
|||||||
|
|
||||||
create_active_enum_table(db).await?;
|
create_active_enum_table(db).await?;
|
||||||
create_active_enum_child_table(db).await?;
|
create_active_enum_child_table(db).await?;
|
||||||
|
create_insert_default_table(db).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -234,3 +235,18 @@ pub async fn create_satellites_table(db: &DbConn) -> Result<ExecResult, DbErr> {
|
|||||||
|
|
||||||
create_table(db, &stmt, Satellite).await
|
create_table(db, &stmt, Satellite).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn create_insert_default_table(db: &DbConn) -> Result<ExecResult, DbErr> {
|
||||||
|
let create_table_stmt = sea_query::Table::create()
|
||||||
|
.table(insert_default::Entity.table_ref())
|
||||||
|
.col(
|
||||||
|
ColumnDef::new(insert_default::Column::Id)
|
||||||
|
.integer()
|
||||||
|
.not_null()
|
||||||
|
.auto_increment()
|
||||||
|
.primary_key(),
|
||||||
|
)
|
||||||
|
.to_owned();
|
||||||
|
|
||||||
|
create_table(db, &create_table_stmt, InsertDefault).await
|
||||||
|
}
|
39
tests/insert_default_tests.rs
Normal file
39
tests/insert_default_tests.rs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
pub mod common;
|
||||||
|
|
||||||
|
pub use common::{features::*, setup::*, TestContext};
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
|
#[sea_orm_macros::test]
|
||||||
|
#[cfg(any(
|
||||||
|
feature = "sqlx-mysql",
|
||||||
|
feature = "sqlx-sqlite",
|
||||||
|
feature = "sqlx-postgres"
|
||||||
|
))]
|
||||||
|
async fn main() -> Result<(), DbErr> {
|
||||||
|
let ctx = TestContext::new("insert_default_tests").await;
|
||||||
|
create_tables(&ctx.db).await?;
|
||||||
|
create_insert_default(&ctx.db).await?;
|
||||||
|
ctx.delete().await;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn create_insert_default(db: &DatabaseConnection) -> Result<(), DbErr> {
|
||||||
|
use insert_default::*;
|
||||||
|
|
||||||
|
let active_model = ActiveModel {
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
active_model.clone().insert(db).await?;
|
||||||
|
active_model.clone().insert(db).await?;
|
||||||
|
active_model.insert(db).await?;
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
Entity::find().all(db).await?,
|
||||||
|
vec![Model { id: 1 }, Model { id: 2 }, Model { id: 3 }]
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user