From f50dc1dd1c6eefa464b6fbc3bdf622281a8da564 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Wed, 18 Jan 2023 19:23:29 +0800 Subject: [PATCH] [issues] test case --- issues/1357/Cargo.toml | 18 +++++++++++++++++ issues/1357/src/entity.rs | 14 +++++++++++++ issues/1357/src/main.rs | 42 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 issues/1357/Cargo.toml create mode 100644 issues/1357/src/entity.rs create mode 100644 issues/1357/src/main.rs diff --git a/issues/1357/Cargo.toml b/issues/1357/Cargo.toml new file mode 100644 index 00000000..55e7bfc3 --- /dev/null +++ b/issues/1357/Cargo.toml @@ -0,0 +1,18 @@ +[workspace] +# A separate workspace + +[package] +name = "sea-orm-issues-1357" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] +anyhow = "1" +serde = "1" +tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] } + +[dependencies.sea-orm] +path = "../../" +default-features = false +features = ["macros", "runtime-tokio-native-tls", "sqlx-sqlite"] diff --git a/issues/1357/src/entity.rs b/issues/1357/src/entity.rs new file mode 100644 index 00000000..3ad25f9f --- /dev/null +++ b/issues/1357/src/entity.rs @@ -0,0 +1,14 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "pool")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub id: i64, + pub name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/issues/1357/src/main.rs b/issues/1357/src/main.rs new file mode 100644 index 00000000..f7488beb --- /dev/null +++ b/issues/1357/src/main.rs @@ -0,0 +1,42 @@ +use anyhow::Result; +use sea_orm::{ConnectionTrait, Database, EntityTrait, IntoActiveModel, Schema}; + +mod entity; + +use entity::*; + +#[tokio::main] +async fn main() -> Result<()> { + let db = Database::connect("sqlite::memory:").await.unwrap(); + + let builder = db.get_database_backend(); + let schema = Schema::new(builder); + let stmt = schema.create_table_from_entity(Entity); + db.execute(builder.build(&stmt)).await?; + + let model = Model { + id: 100, + name: "Hello".to_owned(), + }; + + let res = Entity::insert(model.clone().into_active_model()) + .exec(&db) + .await?; + + assert_eq!(Entity::find().one(&db).await?, Some(model.clone())); + assert_eq!(res.last_insert_id, model.id); + + let model = Model { + id: -10, + name: "World".to_owned(), + }; + + let res = Entity::insert(model.clone().into_active_model()) + .exec(&db) + .await?; + + assert_eq!(Entity::find().one(&db).await?, Some(model.clone())); + assert_eq!(res.last_insert_id, model.id); + + Ok(()) +}