diff --git a/Cargo.lock b/Cargo.lock index fe57c084db..9e9b41c19e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5111,6 +5111,7 @@ checksum = "2932dc07acd2066ff2e3921a4419606b220ba6cd03a9935123856cc534877056" dependencies = [ "rand 0.6.5", "secp256k1-sys 0.1.2", + "serde", ] [[package]] @@ -5120,7 +5121,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6179428c22c73ac0fbb7b5579a56353ce78ba29759b3b8575183336ea74cdfb" dependencies = [ "secp256k1-sys 0.3.0", - "serde", ] [[package]] @@ -5279,7 +5279,7 @@ dependencies = [ [[package]] name = "serial_test" version = "0.5.1" -source = "git+https://github.com/tworec/serial_test.git?branch=actix_rt_test#0d3db75eb5dde6aae32ba3672c80af652e0b58ba" +source = "git+https://github.com/tworec/serial_test.git?branch=actix_rt_test#6c848541e89262f90ca693d9e1a84c6f3df0953b" dependencies = [ "lazy_static", "parking_lot 0.10.2", @@ -5300,7 +5300,7 @@ dependencies = [ [[package]] name = "serial_test_derive" version = "0.5.1" -source = "git+https://github.com/tworec/serial_test.git?branch=actix_rt_test#0d3db75eb5dde6aae32ba3672c80af652e0b58ba" +source = "git+https://github.com/tworec/serial_test.git?branch=actix_rt_test#6c848541e89262f90ca693d9e1a84c6f3df0953b" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.7", @@ -6855,7 +6855,7 @@ dependencies = [ [[package]] name = "ya-client" version = "0.4.0" -source = "git+https://github.com/golemfactory/ya-client.git?branch=event-api/master#ff0a2d48f0b8b2e6b751cc536db0edc378af8ed7" +source = "git+https://github.com/golemfactory/ya-client.git?branch=event-api/master#721259d017a3306af3724eb393aa2f9383d74b9c" dependencies = [ "awc 1.0.1", "bytes 0.5.6", @@ -6892,7 +6892,7 @@ dependencies = [ [[package]] name = "ya-client-model" version = "0.2.0" -source = "git+https://github.com/golemfactory/ya-client.git?branch=event-api/master#ff0a2d48f0b8b2e6b751cc536db0edc378af8ed7" +source = "git+https://github.com/golemfactory/ya-client.git?branch=event-api/master#721259d017a3306af3724eb393aa2f9383d74b9c" dependencies = [ "bigdecimal 0.1.2", "chrono", @@ -6901,9 +6901,11 @@ dependencies = [ "hex", "openssl", "rand 0.7.3", - "secp256k1 0.19.0", + "secp256k1 0.17.2", "serde", "serde_json", + "strum", + "strum_macros", "thiserror", ] diff --git a/core/payment/src/dao/debit_note_event.rs b/core/payment/src/dao/debit_note_event.rs index 783823e74b..a535cdbf4c 100644 --- a/core/payment/src/dao/debit_note_event.rs +++ b/core/payment/src/dao/debit_note_event.rs @@ -37,19 +37,15 @@ impl<'c> AsDao<'c> for DebitNoteEventDao<'c> { } impl<'c> DebitNoteEventDao<'c> { - pub async fn create( + pub async fn create( &self, debit_note_id: String, owner_id: NodeId, event_type: DebitNoteEventType, details: Option, ) -> DbResult<()> { - let event = WriteObj::new(debit_note_id, owner_id, event_type, details)?; do_with_transaction(self.pool, move |conn| { - diesel::insert_into(write_dsl::pay_debit_note_event) - .values(event) - .execute(conn)?; - Ok(()) + create(debit_note_id, owner_id, event_type, details, conn) }) .await } diff --git a/core/payment/src/dao/invoice_event.rs b/core/payment/src/dao/invoice_event.rs index 7fc04d1490..366dc4beca 100644 --- a/core/payment/src/dao/invoice_event.rs +++ b/core/payment/src/dao/invoice_event.rs @@ -37,19 +37,15 @@ impl<'c> AsDao<'c> for InvoiceEventDao<'c> { } impl<'c> InvoiceEventDao<'c> { - pub async fn create( + pub async fn create( &self, invoice_id: String, owner_id: NodeId, event_type: InvoiceEventType, details: Option, ) -> DbResult<()> { - let event = WriteObj::new(invoice_id, owner_id, event_type, details)?; do_with_transaction(self.pool, move |conn| { - diesel::insert_into(write_dsl::pay_invoice_event) - .values(event) - .execute(conn)?; - Ok(()) + create(invoice_id, owner_id, event_type, details, conn) }) .await } diff --git a/core/payment/src/models/debit_note_event.rs b/core/payment/src/models/debit_note_event.rs index 9244f4ca87..8db7783969 100644 --- a/core/payment/src/models/debit_note_event.rs +++ b/core/payment/src/models/debit_note_event.rs @@ -31,7 +31,7 @@ impl WriteObj { Ok(Self { debit_note_id, owner_id, - event_type: serde_json::to_string(&event_type)?, + event_type: event_type.to_string(), details, }) } @@ -53,6 +53,12 @@ impl TryFrom for DebitNoteEvent { type Error = DbError; fn try_from(event: ReadObj) -> DbResult { + let event_type = event.event_type.parse().map_err(|e| { + DbError::Integrity(format!( + "DebitNoteEvent type `{}` parsing failed: {}", + &event.event_type, e + )) + })?; // TODO Attach details when event_type=REJECTED let _details = match event.details { Some(s) => Some(json_from_str(&s)?), @@ -61,7 +67,7 @@ impl TryFrom for DebitNoteEvent { Ok(Self { debit_note_id: event.debit_note_id, event_date: Utc.from_utc_datetime(&event.timestamp), - event_type: serde_json::from_str(&event.event_type)?, + event_type, }) } } diff --git a/core/payment/src/models/invoice_event.rs b/core/payment/src/models/invoice_event.rs index e7870ce1bb..6060cad717 100644 --- a/core/payment/src/models/invoice_event.rs +++ b/core/payment/src/models/invoice_event.rs @@ -31,7 +31,7 @@ impl WriteObj { Ok(Self { invoice_id, owner_id, - event_type: serde_json::to_string(&event_type)?, + event_type: event_type.to_string(), details, }) } @@ -53,12 +53,19 @@ impl TryFrom for InvoiceEvent { type Error = DbError; fn try_from(event: ReadObj) -> DbResult { + let event_type = event.event_type.parse().map_err(|e| { + DbError::Integrity(format!( + "InvoiceEvent type `{}` parsing failed: {}", + event.event_type, e + )) + })?; + // TODO Attach details when event_type=REJECTED let _details = match event.details { Some(s) => Some(json_from_str(&s)?), None => None, }; - let event_type = serde_json::from_str(&event.event_type)?; + Ok(Self { invoice_id: event.invoice_id, event_date: Utc.from_utc_datetime(&event.timestamp),