diff --git a/tests/common/bakery_chain/Readme.md b/tests/common/bakery_chain/Readme.md
new file mode 100644
index 00000000..1b5bf076
--- /dev/null
+++ b/tests/common/bakery_chain/Readme.md
@@ -0,0 +1,3 @@
+# Schema for SeaORM test suite
+
+ERD generated by DataGrip.
\ No newline at end of file
diff --git a/tests/common/bakery_chain/bakery_chain_erd.drawio b/tests/common/bakery_chain/bakery_chain_erd.drawio
deleted file mode 100644
index 1f2b430f..00000000
--- a/tests/common/bakery_chain/bakery_chain_erd.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/tests/common/bakery_chain/bakery_chain_erd.jpg b/tests/common/bakery_chain/bakery_chain_erd.jpg
deleted file mode 100644
index 6decffa5..00000000
Binary files a/tests/common/bakery_chain/bakery_chain_erd.jpg and /dev/null differ
diff --git a/tests/common/bakery_chain/bakery_chain_erd.png b/tests/common/bakery_chain/bakery_chain_erd.png
new file mode 100644
index 00000000..b0b9ac86
Binary files /dev/null and b/tests/common/bakery_chain/bakery_chain_erd.png differ
diff --git a/tests/common/bakery_chain/bakery_chain_erd.svg b/tests/common/bakery_chain/bakery_chain_erd.svg
new file mode 100644
index 00000000..28cf1777
--- /dev/null
+++ b/tests/common/bakery_chain/bakery_chain_erd.svg
@@ -0,0 +1,1047 @@
+
diff --git a/tests/common/setup/schema.rs b/tests/common/setup/schema.rs
index 5550994d..5542c618 100644
--- a/tests/common/setup/schema.rs
+++ b/tests/common/setup/schema.rs
@@ -19,8 +19,8 @@ pub async fn create_bakery_table(db: &DbConn) -> Result {
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(bakery::Column::Name).string())
- .col(ColumnDef::new(bakery::Column::ProfitMargin).double())
+ .col(ColumnDef::new(bakery::Column::Name).string().not_null())
+ .col(ColumnDef::new(bakery::Column::ProfitMargin).double().not_null())
.to_owned();
create_table(db, &stmt).await
@@ -33,12 +33,11 @@ pub async fn create_baker_table(db: &DbConn) -> Result {
.col(
ColumnDef::new(baker::Column::Id)
.integer()
- .not_null()
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(baker::Column::Name).string())
- .col(ColumnDef::new(baker::Column::ContactDetails).json())
+ .col(ColumnDef::new(baker::Column::Name).string().not_null())
+ .col(ColumnDef::new(baker::Column::ContactDetails).json().not_null())
.col(ColumnDef::new(baker::Column::BakeryId).integer())
.foreign_key(
ForeignKey::create()
@@ -64,7 +63,7 @@ pub async fn create_customer_table(db: &DbConn) -> Result {
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(customer::Column::Name).string())
+ .col(ColumnDef::new(customer::Column::Name).string().not_null())
.col(ColumnDef::new(customer::Column::Notes).text())
.to_owned();
@@ -82,7 +81,7 @@ pub async fn create_order_table(db: &DbConn) -> Result {
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(order::Column::Total).decimal_len(19, 4))
+ .col(ColumnDef::new(order::Column::Total).decimal_len(19, 4).not_null())
.col(ColumnDef::new(order::Column::BakeryId).integer().not_null())
.col(
ColumnDef::new(order::Column::CustomerId)
@@ -126,8 +125,8 @@ pub async fn create_lineitem_table(db: &DbConn) -> Result {
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(lineitem::Column::Price).decimal_len(19, 4))
- .col(ColumnDef::new(lineitem::Column::Quantity).integer())
+ .col(ColumnDef::new(lineitem::Column::Price).decimal_len(19, 4).not_null())
+ .col(ColumnDef::new(lineitem::Column::Quantity).integer().not_null())
.col(
ColumnDef::new(lineitem::Column::OrderId)
.integer()
@@ -178,6 +177,22 @@ pub async fn create_cakes_bakers_table(db: &DbConn) -> Result
.col(cakes_bakers::Column::CakeId)
.col(cakes_bakers::Column::BakerId),
)
+ .foreign_key(
+ ForeignKey::create()
+ .name("FK_cakes_bakers_cake")
+ .from(cakes_bakers::Entity, cakes_bakers::Column::CakeId)
+ .to(cake::Entity, cake::Column::Id)
+ .on_delete(ForeignKeyAction::Cascade)
+ .on_update(ForeignKeyAction::Cascade),
+ )
+ .foreign_key(
+ ForeignKey::create()
+ .name("FK_cakes_bakers_baker")
+ .from(cakes_bakers::Entity, cakes_bakers::Column::BakerId)
+ .to(baker::Entity, baker::Column::Id)
+ .on_delete(ForeignKeyAction::Cascade)
+ .on_update(ForeignKeyAction::Cascade),
+ )
.to_owned();
create_table(db, &stmt).await
@@ -194,9 +209,9 @@ pub async fn create_cake_table(db: &DbConn) -> Result {
.auto_increment()
.primary_key(),
)
- .col(ColumnDef::new(cake::Column::Name).string())
- .col(ColumnDef::new(cake::Column::Price).decimal_len(19, 4))
- .col(ColumnDef::new(cake::Column::BakeryId).integer().not_null())
+ .col(ColumnDef::new(cake::Column::Name).string().not_null())
+ .col(ColumnDef::new(cake::Column::Price).decimal_len(19, 4).not_null())
+ .col(ColumnDef::new(cake::Column::BakeryId).integer())
.foreign_key(
ForeignKey::create()
.name("FK_cake_bakery")
@@ -205,8 +220,8 @@ pub async fn create_cake_table(db: &DbConn) -> Result {
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade),
)
- .col(ColumnDef::new(cake::Column::GlutenFree).boolean())
- .col(ColumnDef::new(cake::Column::Serial).uuid())
+ .col(ColumnDef::new(cake::Column::GlutenFree).boolean().not_null())
+ .col(ColumnDef::new(cake::Column::Serial).uuid().not_null())
.to_owned();
create_table(db, &stmt).await
diff --git a/tests/crud_tests.rs b/tests/crud_tests.rs
index 12d9a5b8..94412a4d 100644
--- a/tests/crud_tests.rs
+++ b/tests/crud_tests.rs
@@ -6,8 +6,8 @@ pub use common::{bakery_chain::*, setup::*, TestContext};
mod crud;
// Run the test locally:
-// DATABASE_URL="mysql://root:root@localhost" cargo test --features sqlx-mysql,runtime-async-std --test bakery_chain_tests
-// DATABASE_URL="postgres://root:root@localhost" cargo test --features sqlx-postgres,runtime-async-std --test bakery_chain_tests
+// DATABASE_URL="mysql://root:root@localhost" cargo test --features sqlx-mysql,runtime-async-std --test crud_tests
+// DATABASE_URL="postgres://root:root@localhost" cargo test --features sqlx-postgres,runtime-async-std --test crud_tests
#[cfg_attr(feature = "runtime-async-std", async_std::test)]
#[cfg_attr(feature = "runtime-actix", actix_rt::test)]
#[cfg_attr(feature = "runtime-tokio", tokio::test)]