Fix relationship between Cake and lineitems, add Cake schema creation test
This commit is contained in:
parent
391fb08260
commit
c820bb66f7
@ -1 +1 @@
|
|||||||
<mxfile host="Electron" modified="2021-06-25T08:37:52.010Z" agent="5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="Mbktnhi5BCDVUKHHMNf_" version="14.6.13" type="device"><diagram id="R2lEEEUBdFMjLlhIrx00" name="Page-1">7Z1fc9o4EMA/DY/N4L84j4Em194ld52mM22fMootQBfb4mxRoJ/+VrGMwSsnEIPdzmgmM0WLEEK/XXl3tXYHziRZ/5GRxfyORzQe2MNoPXDeD2zbsoY+/CMlm0JiD4NhIZllLFK9KsE9+0mVsOy2ZBHN9zoKzmPBFvvCkKcpDcWejGQZX+13m/J4/1sXZEaR4D4kMZZ+ZZGYF9LAG1byD5TN5mL7i9U7CSk7K0E+JxFf7YnoWtzwVKgpfqJZQlKaCnjnjmRPNBt413Mh5C+9Gtg38DeVvS9mnM9iShYsvwh5AuIwhy43U5KwWK7zzkBjNRB8nXM9cCYZ56J4lawnNJawSgzFnG4a3t2uQybHPeADT+N1/v3JDf8cp8Hl1/m7p/nm33dqlB8kXqr1HV/9df35O8gmH64+/q1WSmzK5RewRANnPBdJDAILXuYi4090wmOegSTlKfQcT1kc10QkZrMUmiHMFxbAGf+gmWAA9kq9kbAokl8zXs2ZoPcLEsrvXIEegyzjyzSi8qcM5fCw7Eo1Hbtsq0mWPwlGp+vGtbK2BMBUKE+oyDbQRX3AdpVCKCt5d+krwarSOWekZPMdfSv1kCgdmm3HrtDAC0XnGFIeRkVAkzYIUb5iSUwKDDvrItctnLM4uiUbvpTTzQUJn8rWeM4z9hP6kwosycpVtv29Hvfyk2rMjObQ51O5tlZNdEfWex1vSS7K2fA4JoucPSpuzjgh2YylYy4EmFHRCanNDnvLhfYJcDtODXegwW25Gtx2uZ+enrePeMv+sO8MP8JKzIo9RGebhxpkDhbG0tktncof41aSz+r3SRGHhZ3Gz9vkHOyTps+2KIggj1utWnCm9kxvDH+wTJPhhTfwYE4TaFtVG/5k90xMeArTJOyZDwWVWFGpFntw7UPhvmAvGHl53fMPA+yczZ5HiG9KEloQvhcZcDCAWwD2egccIMCPcsPODdYWWIO+sQY2wsqzyGBth9Wy+uZqXSKuIZirwdoKq9s31gBfZhcZnzLxUPiaxfX2JuZEGNJtSI/6Jm1rYlnypHGTTXx0bHzkjQ6JjywN7e0GcHrc+Dps4qMj7LkJ+QvxkQ7w+czZMfHROQHr4qNuAbv6+IgZn6sVWF2E1C1YnKk0nnRbqtoAqVusOCE5AazGvWrvXtXTz16gca88DWz78mzuFY6bjHt1jDn7R7tXOsDns2acnTTu1QkB69yrTgH7OJ+1yFioCN8BInxyaAAfDljnZnUKeIR36Ef9gbDBejhWrZ/VKddyYHNudFKuukx0t/aKE1YxSykTNDFoW6HVpZ47RRtoUhmwCA+PdMozdcV9TwSOlQzmI1zmYe+YcWJjkfFoGdLogYgC8xeWUAhPk4Vh3Ya10ztrnO2YxUtB04dpRpVJjzmPKUkN6VaBcN+kXexvIaI0mtEykUXjR766rgRorXZqY2kaXcmaZ2hef05IuinzWkgKi5htvm0/Bo3vkirgUs33ZR6raG1Uq5iqnF8jFiXK+TIL6Uuk1PYG85vRl5AWKDDSXYRDDcKtMKMxEezH/pR1YNV3fJKKXeXLXNu7UHMtM2busKYexa9VH6w0BI3l4bG8+ljFgqCxgCHZ7HRT5tc47VFZZb79osu9im14UQxZ6fJ2cVuoN3Y7u1PvcoeTshsmJ35qpS2r7F5V2uK4qT+ldfxhXdFG9T3tUKV18VhBfawGpT2ZWuHj2X9kGRzSLXMc0KDcjccBll/bJ/zynGdXV22Nrp6vGj3AF0lzHHCEF1SYy1HHATrA53OCGg7jTTKxDVbdIUC3WDVH8csctjNjr63A6pL/nYIdYXsV/PliaU53TgFYewzQreniBIRMF8uPmYxxW7q6w4BO6Qaa09mY7CYSZb5YJhMN6DagdUcDnYL2seN8W5mxiZZaR0vo3l1HVzyljexH54qWfHwrgomWjrBqvyHB+EK0pAN8Pu8LX5tDXSmkgXo4VF2s1ClUHydKTcHUCQHrYqZuAeOU5X9LkgomNmZvPhVlbeDU7eaML768yEzDzByrOn8whN9GWBc8dWvIOPkxacpqGYe6tUOtPX7QOtRnu9nTx3lM41AfY9INh5+/jEON+Zq7EU4IuH/nGkdM5qkprbH27lIHmpu0uaC5qoWUKA3ft/Pt35n28W1iiOgpq4fomolviph8vVMEB62qBk42zlACV25Tr1YTuQ1PQ+msmiioOWnO5VtrieojufWRzlxJVD5bpGsVs45QsW115rbReXWme6hqjhrce6Oax6smvrz9crvfL1A4XN7Z9LpqNtSC/36qiZ6I5HRcfznq6cL8m+2a5VP9XlfNUc+qWVco983FwfWRvI5VM8AJ2POq5hvVrGdfs3yQ6Ou+Zs+V63Z91xy99WYLrJr1x6Wf6FYLC+Uw9x+Of+ytFtCsHtRfdK/+ewXn+n8=</diagram></mxfile>
|
<mxfile host="Electron" modified="2021-06-30T11:15:47.471Z" agent="5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="CL5AmeQl6dz-rdIIukNg" version="14.6.13" type="device"><diagram id="R2lEEEUBdFMjLlhIrx00" name="Page-1">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</diagram></mxfile>
|
Binary file not shown.
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 50 KiB |
@ -16,8 +16,6 @@ pub struct Model {
|
|||||||
pub price: f32,
|
pub price: f32,
|
||||||
pub bakery_id: Option<i32>,
|
pub bakery_id: Option<i32>,
|
||||||
pub lineitem_id: Option<i32>,
|
pub lineitem_id: Option<i32>,
|
||||||
pub best_before: String,
|
|
||||||
pub produced_at: String,
|
|
||||||
pub gluten_free: bool,
|
pub gluten_free: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,8 +26,6 @@ pub enum Column {
|
|||||||
Price,
|
Price,
|
||||||
BakeryId,
|
BakeryId,
|
||||||
LineitemId,
|
LineitemId,
|
||||||
BestBefore,
|
|
||||||
ProducedAt,
|
|
||||||
GlutenFree,
|
GlutenFree,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,8 +56,6 @@ impl ColumnTrait for Column {
|
|||||||
Self::Price => ColumnType::Money(Some((19, 4))).def(),
|
Self::Price => ColumnType::Money(Some((19, 4))).def(),
|
||||||
Self::BakeryId => ColumnType::Integer.def(),
|
Self::BakeryId => ColumnType::Integer.def(),
|
||||||
Self::LineitemId => ColumnType::Integer.def(),
|
Self::LineitemId => ColumnType::Integer.def(),
|
||||||
Self::BestBefore => ColumnType::Date.def(),
|
|
||||||
Self::ProducedAt => ColumnType::Timestamp.def(),
|
|
||||||
Self::GlutenFree => ColumnType::Boolean.def(),
|
Self::GlutenFree => ColumnType::Boolean.def(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,10 +68,7 @@ impl RelationTrait for Relation {
|
|||||||
.from(Column::BakeryId)
|
.from(Column::BakeryId)
|
||||||
.to(super::bakery::Column::Id)
|
.to(super::bakery::Column::Id)
|
||||||
.into(),
|
.into(),
|
||||||
Self::Lineitem => Entity::belongs_to(super::lineitem::Entity)
|
Self::Lineitem => Entity::has_many(super::lineitem::Entity).into(),
|
||||||
.from(Column::LineitemId)
|
|
||||||
.to(super::lineitem::Column::Id)
|
|
||||||
.into(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ async fn setup_schema(db: &DbConn) {
|
|||||||
assert!(schema::create_customer_table(db).await.is_ok());
|
assert!(schema::create_customer_table(db).await.is_ok());
|
||||||
assert!(schema::create_order_table(db).await.is_ok());
|
assert!(schema::create_order_table(db).await.is_ok());
|
||||||
assert!(schema::create_lineitem_table(db).await.is_ok());
|
assert!(schema::create_lineitem_table(db).await.is_ok());
|
||||||
|
assert!(schema::create_cake_table(db).await.is_ok());
|
||||||
assert!(schema::create_cakes_bakers_table(db).await.is_ok());
|
assert!(schema::create_cakes_bakers_table(db).await.is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ pub async fn create_bakery(db: &DbConn) -> Result<(), ExecErr> {
|
|||||||
profit_margin: Set(10.4),
|
profit_margin: Set(10.4),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
let res: InsertResult = Bakery::insert(seaside_bakery).exec(db).await?;
|
let _res: InsertResult = Bakery::insert(seaside_bakery).exec(db).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -168,3 +168,36 @@ pub async fn create_cakes_bakers_table(db: &DbConn) -> Result<ExecResult, ExecEr
|
|||||||
|
|
||||||
create_table(db, &stmt).await
|
create_table(db, &stmt).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn create_cake_table(db: &DbConn) -> Result<ExecResult, ExecErr> {
|
||||||
|
let stmt = sea_query::Table::create()
|
||||||
|
.table(cake::Entity)
|
||||||
|
.if_not_exists()
|
||||||
|
.col(
|
||||||
|
ColumnDef::new(cake::Column::Id)
|
||||||
|
.integer()
|
||||||
|
.not_null()
|
||||||
|
.auto_increment()
|
||||||
|
.primary_key(),
|
||||||
|
)
|
||||||
|
.col(ColumnDef::new(cake::Column::Name).string())
|
||||||
|
.col(ColumnDef::new(cake::Column::Price).float())
|
||||||
|
.col(ColumnDef::new(cake::Column::BakeryId).integer().not_null())
|
||||||
|
.col(
|
||||||
|
ColumnDef::new(cake::Column::LineitemId)
|
||||||
|
.integer()
|
||||||
|
.not_null(),
|
||||||
|
)
|
||||||
|
.foreign_key(
|
||||||
|
ForeignKey::create()
|
||||||
|
.name("FK_cake_bakery")
|
||||||
|
.from(cake::Entity, cake::Column::BakeryId)
|
||||||
|
.to(bakery::Entity, bakery::Column::Id)
|
||||||
|
.on_delete(ForeignKeyAction::Cascade)
|
||||||
|
.on_update(ForeignKeyAction::Cascade),
|
||||||
|
)
|
||||||
|
.col(ColumnDef::new(cake::Column::GlutenFree).boolean())
|
||||||
|
.to_owned();
|
||||||
|
|
||||||
|
create_table(db, &stmt).await
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user