Create serial field on cake which is UUID

This commit is contained in:
Sam Samai 2021-07-19 17:23:34 +10:00
parent d64bf72910
commit 47b70cfe6d
10 changed files with 18 additions and 1 deletions

View File

@ -52,6 +52,7 @@ strum = { git = "https://github.com/SeaQL/strum.git", branch = "sea-orm", versio
"sea-orm",
] }
serde_json = { version = "^1", optional = true }
uuid = { version = "0.8", features = ["serde", "v4"] }
[dev-dependencies]
async-std = { version = "^1.9", features = ["attributes"] }

View File

@ -1 +1 @@
<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>
<mxfile host="Electron" modified="2021-07-19T07:09:05.149Z" 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="jiz2_IOPgVATbGQnA0Or" 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: 50 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -17,6 +17,7 @@ pub struct Model {
pub price: Decimal,
pub bakery_id: Option<i32>,
pub gluten_free: bool,
pub serial: String,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
@ -26,6 +27,7 @@ pub enum Column {
Price,
BakeryId,
GlutenFree,
Serial,
}
#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)]
@ -55,6 +57,7 @@ impl ColumnTrait for Column {
Self::Price => ColumnType::Decimal(Some((19, 4))).def(),
Self::BakeryId => ColumnType::Integer.def(),
Self::GlutenFree => ColumnType::Boolean.def(),
Self::Serial => ColumnType::String(None).def(),
}
}
}

View File

@ -205,6 +205,7 @@ pub async fn create_cake_table(db: &DbConn) -> Result<ExecResult, DbErr> {
.on_update(ForeignKeyAction::Cascade),
)
.col(ColumnDef::new(cake::Column::GlutenFree).boolean())
.col(ColumnDef::new(cake::Column::Serial).string())
.to_owned();
create_table(db, &stmt).await

View File

@ -1,5 +1,6 @@
pub use super::*;
use rust_decimal_macros::dec;
use uuid::Uuid;
pub async fn test_create_cake(db: &DbConn) {
let seaside_bakery = bakery::ActiveModel {
@ -21,11 +22,13 @@ pub async fn test_create_cake(db: &DbConn) {
.exec(db)
.await
.expect("could not insert baker");
let uuid = Uuid::new_v4();
let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)),
gluten_free: Set(false),
serial: Set(uuid.to_string()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)),
..Default::default()
};
@ -65,6 +68,7 @@ pub async fn test_create_cake(db: &DbConn) {
.name,
"SeaSide Bakery"
);
assert_eq!(cake_model.serial, uuid.to_string());
let related_bakers: Vec<baker::Model> = cake_model
.find_related(Baker)

View File

@ -1,6 +1,7 @@
pub use super::*;
use chrono::offset::Utc;
use rust_decimal_macros::dec;
use uuid::Uuid;
pub async fn test_create_lineitem(db: &DbConn) {
// Bakery
@ -30,6 +31,7 @@ pub async fn test_create_lineitem(db: &DbConn) {
name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)),
gluten_free: Set(false),
serial: Set(Uuid::new_v4().to_string()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)),
..Default::default()
};

View File

@ -1,6 +1,7 @@
pub use super::*;
use chrono::offset::Utc;
use rust_decimal_macros::dec;
use uuid::Uuid;
pub async fn test_create_order(db: &DbConn) {
// Bakery
@ -30,6 +31,7 @@ pub async fn test_create_order(db: &DbConn) {
name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)),
gluten_free: Set(false),
serial: Set(Uuid::new_v4().to_string()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)),
..Default::default()
};

View File

@ -1,5 +1,6 @@
pub use super::*;
use rust_decimal_macros::dec;
use uuid::Uuid;
pub async fn test_delete_cake(db: &DbConn) {
let initial_cakes = Cake::find().all(db).await.unwrap().len();
@ -18,6 +19,7 @@ pub async fn test_delete_cake(db: &DbConn) {
name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)),
gluten_free: Set(false),
serial: Set(Uuid::new_v4().to_string()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)),
..Default::default()
};

View File

@ -1,5 +1,6 @@
pub use super::*;
use rust_decimal_macros::dec;
use uuid::Uuid;
pub async fn test_update_cake(db: &DbConn) {
let seaside_bakery = bakery::ActiveModel {
@ -16,6 +17,7 @@ pub async fn test_update_cake(db: &DbConn) {
name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)),
gluten_free: Set(false),
serial: Set(Uuid::new_v4().to_string()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)),
..Default::default()
};