From 1de4d0cd280bdfa8b71f707a1a8da4519ce13b28 Mon Sep 17 00:00:00 2001 From: Sam Samai Date: Sat, 26 Jun 2021 22:09:19 +1000 Subject: [PATCH] Create Customer and Order --- tests/bakery_chain/bakery.rs | 2 + tests/bakery_chain/bakery_chain_erd.jpg | Bin 54167 -> 53447 bytes tests/bakery_chain/customer.rs | 77 +++++++++++++++++++++ tests/bakery_chain/mod.rs | 2 + tests/bakery_chain/order.rs | 88 ++++++++++++++++++++++++ tests/bakery_chain_tests.rs | 74 ++++++++++++++++++-- 6 files changed, 238 insertions(+), 5 deletions(-) create mode 100644 tests/bakery_chain/customer.rs create mode 100644 tests/bakery_chain/order.rs diff --git a/tests/bakery_chain/bakery.rs b/tests/bakery_chain/bakery.rs index 567eaa86..ff4577c8 100644 --- a/tests/bakery_chain/bakery.rs +++ b/tests/bakery_chain/bakery.rs @@ -37,6 +37,7 @@ impl PrimaryKeyTrait for PrimaryKey { #[derive(Copy, Clone, Debug, EnumIter)] pub enum Relation { Baker, + Order, } impl ColumnTrait for Column { @@ -55,6 +56,7 @@ impl RelationTrait for Relation { fn def(&self) -> RelationDef { match self { Self::Baker => Entity::has_many(super::baker::Entity).into(), + Self::Order => Entity::has_many(super::order::Entity).into(), } } } diff --git a/tests/bakery_chain/bakery_chain_erd.jpg b/tests/bakery_chain/bakery_chain_erd.jpg index 7c9f2f9199fd65849625615addfdd9d9f030dcb7..578141d5cbc08e1c4763263144ed4c394f7b1f60 100644 GIT binary patch delta 39770 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 WPJE5LWVZW>y0bFmt=o5f8UG7Z{)&?T delta 40632 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 i9QtxM=Kj#CwLB4~4`@M&WCF6^H6X;3cJC#8hN; diff --git a/tests/bakery_chain/customer.rs b/tests/bakery_chain/customer.rs new file mode 100644 index 00000000..edbd9311 --- /dev/null +++ b/tests/bakery_chain/customer.rs @@ -0,0 +1,77 @@ +use sea_orm::entity::prelude::*; + +#[derive(Copy, Clone, Default, Debug, DeriveEntity)] +pub struct Entity; + +impl EntityName for Entity { + fn table_name(&self) -> &str { + "customer" + } +} + +#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] +pub struct Model { + pub id: i32, + pub name: String, + pub notes: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] +pub enum Column { + Id, + Name, + Notes, +} + +#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] +pub enum PrimaryKey { + Id, +} + +impl PrimaryKeyTrait for PrimaryKey { + fn auto_increment() -> bool { + true + } +} + +#[derive(Copy, Clone, Debug, EnumIter)] +pub enum Relation { + Order, +} + +impl ColumnTrait for Column { + type EntityName = Entity; + + fn def(&self) -> ColumnDef { + match self { + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), + Self::Notes => ColumnType::Text.def(), + } + } +} + +impl RelationTrait for Relation { + fn def(&self) -> RelationDef { + match self { + Self::Order => Entity::has_many(super::order::Entity) + .from(Column::Id) + .to(super::order::Column::CustomerId) + .into(), + } + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Order.def() + } +} + +impl Model { + pub fn find_orders(&self) -> Select { + Entity::find_related().belongs_to::(self) + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/tests/bakery_chain/mod.rs b/tests/bakery_chain/mod.rs index 6c1d8858..22f46f7f 100644 --- a/tests/bakery_chain/mod.rs +++ b/tests/bakery_chain/mod.rs @@ -1,2 +1,4 @@ pub mod baker; pub mod bakery; +pub mod customer; +pub mod order; diff --git a/tests/bakery_chain/order.rs b/tests/bakery_chain/order.rs new file mode 100644 index 00000000..e3218018 --- /dev/null +++ b/tests/bakery_chain/order.rs @@ -0,0 +1,88 @@ +use sea_orm::entity::prelude::*; + +#[derive(Copy, Clone, Default, Debug, DeriveEntity)] +pub struct Entity; + +impl EntityName for Entity { + fn table_name(&self) -> &str { + "order" + } +} + +#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] +pub struct Model { + pub id: i32, + pub total: f32, + pub bakery_id: Option, + pub customer_id: Option, + pub placed_at: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] +pub enum Column { + Id, + Total, + BakeryId, + CustomerId, + PlacedAt, +} + +#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] +pub enum PrimaryKey { + Id, +} + +impl PrimaryKeyTrait for PrimaryKey { + fn auto_increment() -> bool { + true + } +} + +#[derive(Copy, Clone, Debug, EnumIter)] +pub enum Relation { + Bakery, + Customer, +} + +impl ColumnTrait for Column { + type EntityName = Entity; + + fn def(&self) -> ColumnDef { + match self { + Self::Id => ColumnType::Integer.def(), + Self::Total => ColumnType::Money(Some((19, 4))).def(), + Self::BakeryId => ColumnType::Integer.def(), + Self::CustomerId => ColumnType::Integer.def(), + Self::PlacedAt => ColumnType::DateTime.def(), + } + } +} + +impl RelationTrait for Relation { + fn def(&self) -> RelationDef { + match self { + Self::Bakery => Entity::belongs_to(super::bakery::Entity) + .from(Column::BakeryId) + .to(super::bakery::Column::Id) + .into(), + Self::Customer => Entity::belongs_to(super::customer::Entity) + .from(Column::CustomerId) + .to(super::customer::Column::Id) + .into(), + } + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Bakery.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Customer.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/tests/bakery_chain_tests.rs b/tests/bakery_chain_tests.rs index 1a2c92a0..66a7c985 100644 --- a/tests/bakery_chain_tests.rs +++ b/tests/bakery_chain_tests.rs @@ -13,11 +13,13 @@ async fn main() { } async fn setup_schema(db: &DbConn) { - assert!(create_bakery(db).await.is_ok()); - assert!(create_baker(db).await.is_ok()); + assert!(create_bakery_table(db).await.is_ok()); + assert!(create_baker_table(db).await.is_ok()); + assert!(create_customer_table(db).await.is_ok()); + assert!(create_order_table(db).await.is_ok()); } -async fn create_bakery(db: &DbConn) -> Result { +async fn create_bakery_table(db: &DbConn) -> Result { let stmt = sea_query::Table::create() .table(bakery::Entity) .if_not_exists() @@ -35,7 +37,7 @@ async fn create_bakery(db: &DbConn) -> Result { db.execute(stmt.into()).await } -async fn create_baker(db: &DbConn) -> Result { +async fn create_baker_table(db: &DbConn) -> Result { let stmt = sea_query::Table::create() .table(baker::Entity) .if_not_exists() @@ -58,5 +60,67 @@ async fn create_baker(db: &DbConn) -> Result { ) .build(SqliteQueryBuilder); - db.execute(stmt.clone().into()).await + db.execute(stmt.into()).await +} + +async fn create_customer_table(db: &DbConn) -> Result { + let stmt = sea_query::Table::create() + .table(customer::Entity) + .if_not_exists() + .col( + ColumnDef::new(customer::Column::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(customer::Column::Name).string()) + .col(ColumnDef::new(customer::Column::Notes).text()) + .build(SqliteQueryBuilder); + + db.execute(stmt.into()).await +} + +async fn create_order_table(db: &DbConn) -> Result { + let stmt = sea_query::Table::create() + .table(order::Entity) + .if_not_exists() + .col( + ColumnDef::new(order::Column::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(order::Column::Total).float()) + .col(ColumnDef::new(order::Column::BakeryId).integer().not_null()) + .col( + ColumnDef::new(order::Column::CustomerId) + .integer() + .not_null(), + ) + .col( + ColumnDef::new(order::Column::PlacedAt) + .date_time() + .not_null(), + ) + .foreign_key( + ForeignKey::create() + .name("FK_order_bakery") + .from(order::Entity, baker::Column::BakeryId) + .to(bakery::Entity, bakery::Column::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("FK_order_customer") + .from(order::Entity, baker::Column::BakeryId) + .to(customer::Entity, customer::Column::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .build(SqliteQueryBuilder); + + db.execute(stmt.into()).await }