Drop the use of rust_decimal_macros (#2078)

This commit is contained in:
Billy Chan 2024-01-23 22:18:18 +08:00
parent b5804551eb
commit 9797da1ee4
No known key found for this signature in database
GPG Key ID: 45461E52F22E0279
16 changed files with 67 additions and 74 deletions

View File

@ -53,7 +53,6 @@ futures = { version = "0.3" }
tokio = { version = "1.6", features = ["full"] } tokio = { version = "1.6", features = ["full"] }
actix-rt = { version = "2.2.0" } actix-rt = { version = "2.2.0" }
maplit = { version = "1" } maplit = { version = "1" }
rust_decimal_macros = { version = "1" }
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
sea-orm = { path = ".", features = ["mock", "debug-print", "tests-cfg", "postgres-array", "sea-orm-internal"] } sea-orm = { path = ".", features = ["mock", "debug-print", "tests-cfg", "postgres-array", "sea-orm-internal"] }
pretty_assertions = { version = "0.7" } pretty_assertions = { version = "0.7" }

View File

@ -1,3 +1,4 @@
use crate::common::setup::rust_dec;
use sea_orm::{entity::prelude::*, ConnectionTrait}; use sea_orm::{entity::prelude::*, ConnectionTrait};
#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
@ -63,8 +64,7 @@ impl ActiveModelBehavior for ActiveModel {
where where
C: ConnectionTrait, C: ConnectionTrait,
{ {
use rust_decimal_macros::dec; if self.price.as_ref() == &rust_dec(0) {
if self.price.as_ref() == &dec!(0) {
Err(DbErr::Custom(format!( Err(DbErr::Custom(format!(
"[before_save] Invalid Price, insert: {insert}" "[before_save] Invalid Price, insert: {insert}"
))) )))
@ -77,8 +77,7 @@ impl ActiveModelBehavior for ActiveModel {
where where
C: ConnectionTrait, C: ConnectionTrait,
{ {
use rust_decimal_macros::dec; if model.price < rust_dec(0) {
if model.price < dec!(0) {
Err(DbErr::Custom(format!( Err(DbErr::Custom(format!(
"[after_save] Invalid Price, insert: {insert}" "[after_save] Invalid Price, insert: {insert}"
))) )))

View File

@ -158,3 +158,8 @@ pub async fn create_table_without_asserts(
} }
db.execute(builder.build(create)).await db.execute(builder.build(create)).await
} }
pub fn rust_dec<T: ToString>(v: T) -> rust_decimal::Decimal {
use std::str::FromStr;
rust_decimal::Decimal::from_str(&v.to_string()).unwrap()
}

View File

@ -1,5 +1,4 @@
pub use super::*; pub use super::*;
use rust_decimal_macros::dec;
use uuid::Uuid; use uuid::Uuid;
pub async fn test_create_cake(db: &DbConn) { pub async fn test_create_cake(db: &DbConn) {
@ -31,7 +30,7 @@ pub async fn test_create_cake(db: &DbConn) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(-10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(uuid), serial: Set(uuid),
bakery_id: Set(Some(bakery_insert_res.last_insert_id)), bakery_id: Set(Some(bakery_insert_res.last_insert_id)),
@ -64,7 +63,7 @@ pub async fn test_create_cake(db: &DbConn) {
assert!(cake.is_some()); assert!(cake.is_some());
let cake_model = cake.unwrap(); let cake_model = cake.unwrap();
assert_eq!(cake_model.name, "Mud Cake"); assert_eq!(cake_model.name, "Mud Cake");
assert_eq!(cake_model.price, dec!(10.25)); assert_eq!(cake_model.price, rust_dec(-10.25));
assert!(!cake_model.gluten_free); assert!(!cake_model.gluten_free);
assert_eq!( assert_eq!(
cake_model cake_model

View File

@ -1,6 +1,5 @@
pub use super::*; pub use super::*;
use chrono::offset::Utc; use chrono::offset::Utc;
use rust_decimal_macros::dec;
use uuid::Uuid; use uuid::Uuid;
pub async fn test_create_lineitem(db: &DbConn) { pub async fn test_create_lineitem(db: &DbConn) {
@ -34,7 +33,7 @@ pub async fn test_create_lineitem(db: &DbConn) {
// Cake // Cake
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id)), bakery_id: Set(Some(bakery_insert_res.last_insert_id)),
@ -75,7 +74,7 @@ pub async fn test_create_lineitem(db: &DbConn) {
let order_1 = order::ActiveModel { let order_1 = order::ActiveModel {
bakery_id: Set(bakery_insert_res.last_insert_id), bakery_id: Set(bakery_insert_res.last_insert_id),
customer_id: Set(customer_insert_res.last_insert_id), customer_id: Set(customer_insert_res.last_insert_id),
total: Set(dec!(7.55)), total: Set(rust_dec(7.55)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -88,7 +87,7 @@ pub async fn test_create_lineitem(db: &DbConn) {
let lineitem_1 = lineitem::ActiveModel { let lineitem_1 = lineitem::ActiveModel {
cake_id: Set(cake_insert_res.last_insert_id), cake_id: Set(cake_insert_res.last_insert_id),
order_id: Set(order_insert_res.last_insert_id), order_id: Set(order_insert_res.last_insert_id),
price: Set(dec!(7.55)), price: Set(rust_dec(7.55)),
quantity: Set(1), quantity: Set(1),
..Default::default() ..Default::default()
}; };
@ -106,7 +105,7 @@ pub async fn test_create_lineitem(db: &DbConn) {
assert!(lineitem.is_some()); assert!(lineitem.is_some());
let lineitem_model = lineitem.unwrap(); let lineitem_model = lineitem.unwrap();
assert_eq!(lineitem_model.price, dec!(7.55)); assert_eq!(lineitem_model.price, rust_dec(7.55));
let cake: Option<cake::Model> = Cake::find_by_id(lineitem_model.cake_id) let cake: Option<cake::Model> = Cake::find_by_id(lineitem_model.cake_id)
.one(db) .one(db)

View File

@ -1,6 +1,5 @@
pub use super::*; pub use super::*;
use chrono::offset::Utc; use chrono::offset::Utc;
use rust_decimal_macros::dec;
use uuid::Uuid; use uuid::Uuid;
pub async fn test_create_order(db: &DbConn) { pub async fn test_create_order(db: &DbConn) {
@ -34,7 +33,7 @@ pub async fn test_create_order(db: &DbConn) {
// Cake // Cake
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id)), bakery_id: Set(Some(bakery_insert_res.last_insert_id)),
@ -75,7 +74,7 @@ pub async fn test_create_order(db: &DbConn) {
let order_1 = order::ActiveModel { let order_1 = order::ActiveModel {
bakery_id: Set(bakery_insert_res.last_insert_id), bakery_id: Set(bakery_insert_res.last_insert_id),
customer_id: Set(customer_insert_res.last_insert_id), customer_id: Set(customer_insert_res.last_insert_id),
total: Set(dec!(15.10)), total: Set(rust_dec(15.10)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -88,7 +87,7 @@ pub async fn test_create_order(db: &DbConn) {
let lineitem_1 = lineitem::ActiveModel { let lineitem_1 = lineitem::ActiveModel {
cake_id: Set(cake_insert_res.last_insert_id), cake_id: Set(cake_insert_res.last_insert_id),
order_id: Set(order_insert_res.last_insert_id), order_id: Set(order_insert_res.last_insert_id),
price: Set(dec!(7.55)), price: Set(rust_dec(7.55)),
quantity: Set(2), quantity: Set(2),
..Default::default() ..Default::default()
}; };
@ -104,7 +103,7 @@ pub async fn test_create_order(db: &DbConn) {
assert!(order.is_some()); assert!(order.is_some());
let order_model = order.unwrap(); let order_model = order.unwrap();
assert_eq!(order_model.total, dec!(15.10)); assert_eq!(order_model.total, rust_dec(15.10));
let customer: Option<customer::Model> = Customer::find_by_id(order_model.customer_id) let customer: Option<customer::Model> = Customer::find_by_id(order_model.customer_id)
.one(db) .one(db)
@ -128,6 +127,6 @@ pub async fn test_create_order(db: &DbConn) {
.await .await
.expect("could not find related lineitems"); .expect("could not find related lineitems");
assert_eq!(related_lineitems.len(), 1); assert_eq!(related_lineitems.len(), 1);
assert_eq!(related_lineitems[0].price, dec!(7.55)); assert_eq!(related_lineitems[0].price, rust_dec(7.55));
assert_eq!(related_lineitems[0].quantity, 2); assert_eq!(related_lineitems[0].quantity, 2);
} }

View File

@ -1,5 +1,4 @@
pub use super::*; pub use super::*;
use rust_decimal_macros::dec;
use uuid::Uuid; use uuid::Uuid;
pub async fn test_delete_cake(db: &DbConn) { pub async fn test_delete_cake(db: &DbConn) {
@ -17,7 +16,7 @@ pub async fn test_delete_cake(db: &DbConn) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id)), bakery_id: Set(Some(bakery_insert_res.last_insert_id)),

View File

@ -1,5 +1,4 @@
pub use super::*; pub use super::*;
use rust_decimal_macros::dec;
use sea_orm::error::*; use sea_orm::error::*;
#[cfg(any( #[cfg(any(
feature = "sqlx-mysql", feature = "sqlx-mysql",
@ -12,7 +11,7 @@ use uuid::Uuid;
pub async fn test_cake_error_sqlx(db: &DbConn) { pub async fn test_cake_error_sqlx(db: &DbConn) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Moldy Cake".to_owned()), name: Set("Moldy Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(None), bakery_id: Set(None),

View File

@ -15,6 +15,7 @@ pub use error::*;
pub use updates::*; pub use updates::*;
pub use super::common::bakery_chain::*; pub use super::common::bakery_chain::*;
pub use crate::common::setup::rust_dec;
use sea_orm::{entity::*, DbConn}; use sea_orm::{entity::*, DbConn};
pub async fn test_create_bakery(db: &DbConn) { pub async fn test_create_bakery(db: &DbConn) {

View File

@ -1,5 +1,4 @@
pub use super::*; pub use super::*;
use rust_decimal_macros::dec;
use sea_orm::{query::*, DbErr}; use sea_orm::{query::*, DbErr};
use uuid::Uuid; use uuid::Uuid;
@ -16,7 +15,7 @@ pub async fn test_update_cake(db: &DbConn) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(bakery_insert_res.last_insert_id)), bakery_id: Set(Some(bakery_insert_res.last_insert_id)),
@ -36,12 +35,12 @@ pub async fn test_update_cake(db: &DbConn) {
assert!(cake.is_some()); assert!(cake.is_some());
let cake_model = cake.unwrap(); let cake_model = cake.unwrap();
assert_eq!(cake_model.name, "Mud Cake"); assert_eq!(cake_model.name, "Mud Cake");
assert_eq!(cake_model.price, dec!(10.25)); assert_eq!(cake_model.price, rust_dec(10.25));
assert!(!cake_model.gluten_free); assert!(!cake_model.gluten_free);
let mut cake_am: cake::ActiveModel = cake_model.into(); let mut cake_am: cake::ActiveModel = cake_model.into();
cake_am.name = Set("Extra chocolate mud cake".to_owned()); cake_am.name = Set("Extra chocolate mud cake".to_owned());
cake_am.price = Set(dec!(20.00)); cake_am.price = Set(rust_dec(20.00));
let _cake_update_res: cake::Model = cake_am.update(db).await.expect("could not update cake"); let _cake_update_res: cake::Model = cake_am.update(db).await.expect("could not update cake");
@ -51,7 +50,7 @@ pub async fn test_update_cake(db: &DbConn) {
.expect("could not find cake"); .expect("could not find cake");
let cake_model = cake.unwrap(); let cake_model = cake.unwrap();
assert_eq!(cake_model.name, "Extra chocolate mud cake"); assert_eq!(cake_model.name, "Extra chocolate mud cake");
assert_eq!(cake_model.price, dec!(20.00)); assert_eq!(cake_model.price, rust_dec(20.00));
assert!(!cake_model.gluten_free); assert!(!cake_model.gluten_free);
} }

View File

@ -579,7 +579,7 @@ pub async fn create_baker_cake(db: &DatabaseConnection) -> Result<(), DbErr> {
}); });
cakes.push(cake::ActiveModel { cakes.push(cake::ActiveModel {
name: Set(c.to_ascii_lowercase().to_string()), name: Set(c.to_ascii_lowercase().to_string()),
price: Set(rust_decimal_macros::dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some((c as i32 - 65) % 10 + 1)), bakery_id: Set(Some((c as i32 - 65) % 10 + 1)),

View File

@ -1,8 +1,7 @@
pub mod common; pub mod common;
use common::{features::*, TestContext}; use common::{features::*, setup::*, TestContext};
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use rust_decimal_macros::dec;
use sea_orm::{entity::prelude::*, entity::*, DatabaseConnection}; use sea_orm::{entity::prelude::*, entity::*, DatabaseConnection};
use std::str::FromStr; use std::str::FromStr;
@ -24,7 +23,7 @@ async fn main() -> Result<(), DbErr> {
pub async fn create_and_update_pi(db: &DatabaseConnection) -> Result<(), DbErr> { pub async fn create_and_update_pi(db: &DatabaseConnection) -> Result<(), DbErr> {
let pi = pi::Model { let pi = pi::Model {
id: 1, id: 1,
decimal: dec!(3.1415926536), decimal: rust_dec(3.1415926536),
big_decimal: BigDecimal::from_str("3.1415926536").unwrap(), big_decimal: BigDecimal::from_str("3.1415926536").unwrap(),
decimal_opt: None, decimal_opt: None,
big_decimal_opt: None, big_decimal_opt: None,
@ -37,7 +36,7 @@ pub async fn create_and_update_pi(db: &DatabaseConnection) -> Result<(), DbErr>
assert_eq!(model, Some(pi.clone())); assert_eq!(model, Some(pi.clone()));
let res = pi::ActiveModel { let res = pi::ActiveModel {
decimal_opt: Set(Some(dec!(3.1415926536))), decimal_opt: Set(Some(rust_dec(3.1415926536))),
big_decimal_opt: Set(Some(BigDecimal::from_str("3.1415926536").unwrap())), big_decimal_opt: Set(Some(BigDecimal::from_str("3.1415926536").unwrap())),
..pi.clone().into_active_model() ..pi.clone().into_active_model()
} }
@ -50,9 +49,9 @@ pub async fn create_and_update_pi(db: &DatabaseConnection) -> Result<(), DbErr>
model, model,
Some(pi::Model { Some(pi::Model {
id: 1, id: 1,
decimal: dec!(3.1415926536), decimal: rust_dec(3.1415926536),
big_decimal: BigDecimal::from_str("3.1415926536").unwrap(), big_decimal: BigDecimal::from_str("3.1415926536").unwrap(),
decimal_opt: Some(dec!(3.1415926536)), decimal_opt: Some(rust_dec(3.1415926536)),
big_decimal_opt: Some(BigDecimal::from_str("3.1415926536").unwrap()), big_decimal_opt: Some(BigDecimal::from_str("3.1415926536").unwrap()),
}) })
); );

View File

@ -4,7 +4,6 @@ pub use chrono::offset::Utc;
pub use common::{bakery_chain::*, setup::*, TestContext}; pub use common::{bakery_chain::*, setup::*, TestContext};
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
pub use rust_decimal::prelude::*; pub use rust_decimal::prelude::*;
pub use rust_decimal_macros::dec;
use sea_orm::{entity::*, query::*, DbErr, DerivePartialModel, FromQueryResult}; use sea_orm::{entity::*, query::*, DbErr, DerivePartialModel, FromQueryResult};
use sea_query::{Expr, Func, SimpleExpr}; use sea_query::{Expr, Func, SimpleExpr};
pub use uuid::Uuid; pub use uuid::Uuid;
@ -151,7 +150,7 @@ pub async fn right_join() {
let _order = order::ActiveModel { let _order = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(15.10)), total: Set(rust_dec(15.10)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -180,7 +179,7 @@ pub async fn right_join() {
.await .await
.unwrap() .unwrap()
.unwrap(); .unwrap();
assert_eq!(result.order_total, Some(dec!(15.10))); assert_eq!(result.order_total, Some(rust_dec(15.10)));
let select = order::Entity::find() let select = order::Entity::find()
.right_join(customer::Entity) .right_join(customer::Entity)
@ -238,7 +237,7 @@ pub async fn inner_join() {
let kate_order_1 = order::ActiveModel { let kate_order_1 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(15.10)), total: Set(rust_dec(15.10)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -250,7 +249,7 @@ pub async fn inner_join() {
let kate_order_2 = order::ActiveModel { let kate_order_2 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(100.00)), total: Set(rust_dec(100.00)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -320,7 +319,7 @@ pub async fn group_by() {
let kate_order_1 = order::ActiveModel { let kate_order_1 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(99.95)), total: Set(rust_dec(99.95)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -332,7 +331,7 @@ pub async fn group_by() {
let kate_order_2 = order::ActiveModel { let kate_order_2 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(200.00)), total: Set(rust_dec(200.00)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -415,7 +414,7 @@ pub async fn having() {
let kate_order_1 = order::ActiveModel { let kate_order_1 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(100.00)), total: Set(rust_dec(100.00)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -427,7 +426,7 @@ pub async fn having() {
let _kate_order_2 = order::ActiveModel { let _kate_order_2 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_kate.id), customer_id: Set(customer_kate.id),
total: Set(dec!(12.00)), total: Set(rust_dec(12.00)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -447,7 +446,7 @@ pub async fn having() {
let _bob_order_1 = order::ActiveModel { let _bob_order_1 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_bob.id), customer_id: Set(customer_bob.id),
total: Set(dec!(50.0)), total: Set(rust_dec(50.0)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -459,7 +458,7 @@ pub async fn having() {
let _bob_order_2 = order::ActiveModel { let _bob_order_2 = order::ActiveModel {
bakery_id: Set(bakery.id), bakery_id: Set(bakery.id),
customer_id: Set(customer_bob.id), customer_id: Set(customer_bob.id),
total: Set(dec!(50.0)), total: Set(rust_dec(50.0)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -481,7 +480,7 @@ pub async fn having() {
.column_as(order::Column::Total, "order_total") .column_as(order::Column::Total, "order_total")
.group_by(customer::Column::Name) .group_by(customer::Column::Name)
.group_by(order::Column::Total) .group_by(order::Column::Total)
.having(order::Column::Total.gt(dec!(90.00))) .having(order::Column::Total.gt(rust_dec(90.00)))
.into_model::<SelectResult>() .into_model::<SelectResult>()
.all(&ctx.db) .all(&ctx.db)
.await .await
@ -779,7 +778,7 @@ pub async fn linked() -> Result<(), DbErr> {
let baker_bob_res = Baker::insert(baker_bob).exec(&ctx.db).await?; let baker_bob_res = Baker::insert(baker_bob).exec(&ctx.db).await?;
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(seaside_bakery_res.last_insert_id)), bakery_id: Set(Some(seaside_bakery_res.last_insert_id)),
@ -804,7 +803,7 @@ pub async fn linked() -> Result<(), DbErr> {
let baker_bobby_res = Baker::insert(baker_bobby).exec(&ctx.db).await?; let baker_bobby_res = Baker::insert(baker_bobby).exec(&ctx.db).await?;
let cheese_cake = cake::ActiveModel { let cheese_cake = cake::ActiveModel {
name: Set("Cheese Cake".to_owned()), name: Set("Cheese Cake".to_owned()),
price: Set(dec!(20.5)), price: Set(rust_dec(20.5)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(seaside_bakery_res.last_insert_id)), bakery_id: Set(Some(seaside_bakery_res.last_insert_id)),
@ -820,7 +819,7 @@ pub async fn linked() -> Result<(), DbErr> {
.await?; .await?;
let chocolate_cake = cake::ActiveModel { let chocolate_cake = cake::ActiveModel {
name: Set("Chocolate Cake".to_owned()), name: Set("Chocolate Cake".to_owned()),
price: Set(dec!(30.15)), price: Set(rust_dec(30.15)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(seaside_bakery_res.last_insert_id)), bakery_id: Set(Some(seaside_bakery_res.last_insert_id)),
@ -856,7 +855,7 @@ pub async fn linked() -> Result<(), DbErr> {
let kate_order_1 = order::ActiveModel { let kate_order_1 = order::ActiveModel {
bakery_id: Set(seaside_bakery_res.last_insert_id), bakery_id: Set(seaside_bakery_res.last_insert_id),
customer_id: Set(customer_kate_res.last_insert_id), customer_id: Set(customer_kate_res.last_insert_id),
total: Set(dec!(15.10)), total: Set(rust_dec(15.10)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -864,7 +863,7 @@ pub async fn linked() -> Result<(), DbErr> {
lineitem::ActiveModel { lineitem::ActiveModel {
cake_id: Set(cheese_cake_res.last_insert_id), cake_id: Set(cheese_cake_res.last_insert_id),
order_id: Set(kate_order_1_res.last_insert_id), order_id: Set(kate_order_1_res.last_insert_id),
price: Set(dec!(7.55)), price: Set(rust_dec(7.55)),
quantity: Set(2), quantity: Set(2),
..Default::default() ..Default::default()
} }
@ -873,7 +872,7 @@ pub async fn linked() -> Result<(), DbErr> {
let kate_order_2 = order::ActiveModel { let kate_order_2 = order::ActiveModel {
bakery_id: Set(seaside_bakery_res.last_insert_id), bakery_id: Set(seaside_bakery_res.last_insert_id),
customer_id: Set(customer_kate_res.last_insert_id), customer_id: Set(customer_kate_res.last_insert_id),
total: Set(dec!(29.7)), total: Set(rust_dec(29.7)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -881,7 +880,7 @@ pub async fn linked() -> Result<(), DbErr> {
lineitem::ActiveModel { lineitem::ActiveModel {
cake_id: Set(chocolate_cake_res.last_insert_id), cake_id: Set(chocolate_cake_res.last_insert_id),
order_id: Set(kate_order_2_res.last_insert_id), order_id: Set(kate_order_2_res.last_insert_id),
price: Set(dec!(9.9)), price: Set(rust_dec(9.9)),
quantity: Set(3), quantity: Set(3),
..Default::default() ..Default::default()
} }
@ -898,7 +897,7 @@ pub async fn linked() -> Result<(), DbErr> {
let kara_order_1 = order::ActiveModel { let kara_order_1 = order::ActiveModel {
bakery_id: Set(seaside_bakery_res.last_insert_id), bakery_id: Set(seaside_bakery_res.last_insert_id),
customer_id: Set(customer_kara_res.last_insert_id), customer_id: Set(customer_kara_res.last_insert_id),
total: Set(dec!(15.10)), total: Set(rust_dec(15.10)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -906,7 +905,7 @@ pub async fn linked() -> Result<(), DbErr> {
lineitem::ActiveModel { lineitem::ActiveModel {
cake_id: Set(mud_cake_res.last_insert_id), cake_id: Set(mud_cake_res.last_insert_id),
order_id: Set(kara_order_1_res.last_insert_id), order_id: Set(kara_order_1_res.last_insert_id),
price: Set(dec!(7.55)), price: Set(rust_dec(7.55)),
quantity: Set(2), quantity: Set(2),
..Default::default() ..Default::default()
} }
@ -915,7 +914,7 @@ pub async fn linked() -> Result<(), DbErr> {
let kara_order_2 = order::ActiveModel { let kara_order_2 = order::ActiveModel {
bakery_id: Set(seaside_bakery_res.last_insert_id), bakery_id: Set(seaside_bakery_res.last_insert_id),
customer_id: Set(customer_kara_res.last_insert_id), customer_id: Set(customer_kara_res.last_insert_id),
total: Set(dec!(29.7)), total: Set(rust_dec(29.7)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
}; };
@ -923,7 +922,7 @@ pub async fn linked() -> Result<(), DbErr> {
lineitem::ActiveModel { lineitem::ActiveModel {
cake_id: Set(cheese_cake_res.last_insert_id), cake_id: Set(cheese_cake_res.last_insert_id),
order_id: Set(kara_order_2_res.last_insert_id), order_id: Set(kara_order_2_res.last_insert_id),
price: Set(dec!(9.9)), price: Set(rust_dec(9.9)),
quantity: Set(3), quantity: Set(3),
..Default::default() ..Default::default()
} }

View File

@ -3,7 +3,6 @@ pub mod common;
pub use chrono::offset::Utc; pub use chrono::offset::Utc;
pub use common::{bakery_chain::*, setup::*, TestContext}; pub use common::{bakery_chain::*, setup::*, TestContext};
pub use rust_decimal::prelude::*; pub use rust_decimal::prelude::*;
pub use rust_decimal_macros::dec;
pub use uuid::Uuid; pub use uuid::Uuid;
#[cfg(any(feature = "sqlx-mysql", feature = "sqlx-postgres"))] #[cfg(any(feature = "sqlx-mysql", feature = "sqlx-postgres"))]
@ -63,7 +62,7 @@ async fn seed_data(db: &DatabaseConnection) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Mud Cake".to_owned()), name: Set("Mud Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(bakery.id.clone().unwrap())), bakery_id: Set(Some(bakery.id.clone().unwrap())),
@ -100,7 +99,7 @@ async fn seed_data(db: &DatabaseConnection) {
let kate_order_1 = order::ActiveModel { let kate_order_1 = order::ActiveModel {
bakery_id: Set(bakery.id.clone().unwrap()), bakery_id: Set(bakery.id.clone().unwrap()),
customer_id: Set(customer_kate.id.clone().unwrap()), customer_id: Set(customer_kate.id.clone().unwrap()),
total: Set(dec!(99.95)), total: Set(rust_dec(99.95)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -111,7 +110,7 @@ async fn seed_data(db: &DatabaseConnection) {
let _lineitem = lineitem::ActiveModel { let _lineitem = lineitem::ActiveModel {
cake_id: Set(cake_insert_res.last_insert_id), cake_id: Set(cake_insert_res.last_insert_id),
price: Set(dec!(10.00)), price: Set(rust_dec(10.00)),
quantity: Set(12), quantity: Set(12),
order_id: Set(kate_order_1.id.clone().unwrap()), order_id: Set(kate_order_1.id.clone().unwrap()),
..Default::default() ..Default::default()
@ -122,7 +121,7 @@ async fn seed_data(db: &DatabaseConnection) {
let _lineitem2 = lineitem::ActiveModel { let _lineitem2 = lineitem::ActiveModel {
cake_id: Set(cake_insert_res.last_insert_id), cake_id: Set(cake_insert_res.last_insert_id),
price: Set(dec!(50.00)), price: Set(rust_dec(50.00)),
quantity: Set(2), quantity: Set(2),
order_id: Set(kate_order_1.id.clone().unwrap()), order_id: Set(kate_order_1.id.clone().unwrap()),
..Default::default() ..Default::default()
@ -199,7 +198,7 @@ async fn find_baker_least_sales(db: &DatabaseConnection) -> Option<baker::Model>
async fn create_cake(db: &DatabaseConnection, baker: baker::Model) -> Option<cake::Model> { async fn create_cake(db: &DatabaseConnection, baker: baker::Model) -> Option<cake::Model> {
let new_cake = cake::ActiveModel { let new_cake = cake::ActiveModel {
name: Set("New Cake".to_owned()), name: Set("New Cake".to_owned()),
price: Set(dec!(8.00)), price: Set(rust_dec(8.00)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(baker.bakery_id.unwrap())), bakery_id: Set(Some(baker.bakery_id.unwrap())),
@ -244,7 +243,7 @@ async fn create_order(db: &DatabaseConnection, cake: cake::Model) {
let order = order::ActiveModel { let order = order::ActiveModel {
bakery_id: Set(cake.bakery_id.unwrap()), bakery_id: Set(cake.bakery_id.unwrap()),
customer_id: Set(another_customer.id.clone().unwrap()), customer_id: Set(another_customer.id.clone().unwrap()),
total: Set(dec!(200.00)), total: Set(rust_dec(200.00)),
placed_at: Set(Utc::now().naive_utc()), placed_at: Set(Utc::now().naive_utc()),
..Default::default() ..Default::default()
@ -255,7 +254,7 @@ async fn create_order(db: &DatabaseConnection, cake: cake::Model) {
let _lineitem = lineitem::ActiveModel { let _lineitem = lineitem::ActiveModel {
cake_id: Set(cake.id), cake_id: Set(cake.id),
price: Set(dec!(10.00)), price: Set(rust_dec(10.00)),
quantity: Set(300), quantity: Set(300),
order_id: Set(order.id.clone().unwrap()), order_id: Set(order.id.clone().unwrap()),
..Default::default() ..Default::default()

View File

@ -1,6 +1,5 @@
pub mod common; pub mod common;
pub use common::{bakery_chain::*, setup::*, TestContext}; pub use common::{bakery_chain::*, setup::*, TestContext};
use rust_decimal_macros::dec;
pub use sea_orm::{ pub use sea_orm::{
entity::*, error::DbErr, error::SqlErr, tests_cfg, DatabaseConnection, DbBackend, EntityName, entity::*, error::DbErr, error::SqlErr, tests_cfg, DatabaseConnection, DbBackend, EntityName,
ExecResult, ExecResult,
@ -23,7 +22,7 @@ async fn main() {
pub async fn test_error(db: &DatabaseConnection) { pub async fn test_error(db: &DatabaseConnection) {
let mud_cake = cake::ActiveModel { let mud_cake = cake::ActiveModel {
name: Set("Moldy Cake".to_owned()), name: Set("Moldy Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(None), bakery_id: Set(None),
@ -48,7 +47,7 @@ pub async fn test_error(db: &DatabaseConnection) {
let fk_cake = cake::ActiveModel { let fk_cake = cake::ActiveModel {
name: Set("fk error Cake".to_owned()), name: Set("fk error Cake".to_owned()),
price: Set(dec!(10.25)), price: Set(rust_dec(10.25)),
gluten_free: Set(false), gluten_free: Set(false),
serial: Set(Uuid::new_v4()), serial: Set(Uuid::new_v4()),
bakery_id: Set(Some(1000)), bakery_id: Set(Some(1000)),

View File

@ -358,7 +358,6 @@ pub async fn transaction_closure_rollback() -> Result<(), DbErr> {
feature = "sqlx-postgres" feature = "sqlx-postgres"
))] ))]
pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> { pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> {
use rust_decimal_macros::dec;
let ctx = TestContext::new("transaction_with_active_model_behaviour_test").await; let ctx = TestContext::new("transaction_with_active_model_behaviour_test").await;
create_tables(&ctx.db).await?; create_tables(&ctx.db).await?;
@ -366,7 +365,7 @@ pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
cake::ActiveModel { cake::ActiveModel {
name: Set("Cake with invalid price".to_owned()), name: Set("Cake with invalid price".to_owned()),
price: Set(dec!(0)), price: Set(rust_dec(0)),
gluten_free: Set(false), gluten_free: Set(false),
..Default::default() ..Default::default()
} }
@ -382,7 +381,7 @@ pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
cake::ActiveModel { cake::ActiveModel {
name: Set("Cake with invalid price".to_owned()), name: Set("Cake with invalid price".to_owned()),
price: Set(dec!(-10)), price: Set(rust_dec(-10)),
gluten_free: Set(false), gluten_free: Set(false),
..Default::default() ..Default::default()
} }
@ -397,7 +396,7 @@ pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> {
let readonly_cake_1 = cake::ActiveModel { let readonly_cake_1 = cake::ActiveModel {
name: Set("Readonly cake (err_on_before_delete)".to_owned()), name: Set("Readonly cake (err_on_before_delete)".to_owned()),
price: Set(dec!(10)), price: Set(rust_dec(10)),
gluten_free: Set(true), gluten_free: Set(true),
..Default::default() ..Default::default()
} }
@ -417,7 +416,7 @@ pub async fn transaction_with_active_model_behaviour() -> Result<(), DbErr> {
let readonly_cake_2 = cake::ActiveModel { let readonly_cake_2 = cake::ActiveModel {
name: Set("Readonly cake (err_on_after_delete)".to_owned()), name: Set("Readonly cake (err_on_after_delete)".to_owned()),
price: Set(dec!(10)), price: Set(rust_dec(10)),
gluten_free: Set(true), gluten_free: Set(true),
..Default::default() ..Default::default()
} }