From 29616a19c92e82afe088f9d43718b5e4edffa608 Mon Sep 17 00:00:00 2001 From: Godmode Galactus Date: Mon, 16 Oct 2023 15:53:44 +0200 Subject: [PATCH] fixing error for first request --- migration.sql | 4 ++-- src/main.rs | 4 +++- src/transaction_info.rs | 22 +++++++++++++++++----- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/migration.sql b/migration.sql index a6dc8f4..ee15d0b 100644 --- a/migration.sql +++ b/migration.sql @@ -2,8 +2,8 @@ CREATE SCHEMA banking_stage_results; CREATE TABLE banking_stage_results.transaction_infos ( signature CHAR(88) NOT NULL, - message CHAR(1280), - errors CHAR(10000) NOT NULL, + message text, + errors text, is_executed BOOL, is_confirmed BOOL, first_notification_slot BIGINT NOT NULL, diff --git a/src/main.rs b/src/main.rs index 835bfb6..e8237d1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -68,9 +68,11 @@ async fn main() { x.add_notification(&transaction); } None => { + let mut x = TransactionInfo::new(&transaction); + x.add_notification(&transaction); map_of_infos.insert( sig, - TransactionInfo::new(transaction.signature, transaction.slot), + x, ); } } diff --git a/src/transaction_info.rs b/src/transaction_info.rs index ee02dc8..f01d4d1 100644 --- a/src/transaction_info.rs +++ b/src/transaction_info.rs @@ -79,14 +79,26 @@ pub struct TransactionInfo { } impl TransactionInfo { - pub fn new(signature: String, first_notification_slot: Slot) -> Self { + pub fn new(notification: &SubscribeUpdateBankingTransactionResults) -> Self { + let mut errors = HashMap::new(); + let is_executed = notification.error.is_none(); + + match ¬ification.error { + Some(e) => { + let error: TransactionError = bincode::deserialize(&e.err).unwrap(); + let key = ErrorKey { error, slot: notification.slot }; + errors.insert( key, 1); + }, + None => { + } + }; Self { - signature, + signature: notification.signature.clone(), transaction_message: None, - errors: HashMap::new(), - is_executed: false, + errors, + is_executed, is_confirmed: false, - first_notification_slot, + first_notification_slot: notification.slot, cu_requested: None, prioritization_fees: None, }