Saving accounts used in json format
This commit is contained in:
parent
c1a61ab0a6
commit
3ec0a4372d
|
@ -9,7 +9,7 @@ CREATE TABLE banking_stage_results.transaction_infos (
|
|||
cu_requested BIGINT,
|
||||
prioritization_fees BIGINT,
|
||||
utc_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||
accounts_used text [],
|
||||
accounts_used text,
|
||||
processed_slot BIGINT
|
||||
);
|
||||
|
||||
|
|
|
@ -241,7 +241,7 @@ pub struct PostgresTransactionInfo {
|
|||
pub cu_requested: Option<i64>,
|
||||
pub prioritization_fees: Option<i64>,
|
||||
pub utc_timestamp: DateTime<Utc>,
|
||||
pub accounts_used: Vec<String>,
|
||||
pub accounts_used: String,
|
||||
pub processed_slot: Option<i64>,
|
||||
}
|
||||
|
||||
|
@ -252,6 +252,12 @@ pub struct TransactionErrorData {
|
|||
count: usize,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct AccountUsed {
|
||||
key: String,
|
||||
writable: bool,
|
||||
}
|
||||
|
||||
impl From<&TransactionInfo> for PostgresTransactionInfo {
|
||||
fn from(value: &TransactionInfo) -> Self {
|
||||
let errors = value
|
||||
|
@ -266,8 +272,11 @@ impl From<&TransactionInfo> for PostgresTransactionInfo {
|
|||
let accounts_used = value
|
||||
.account_used
|
||||
.iter()
|
||||
.map(|x| format!("{}({})", x.0, x.1))
|
||||
.collect();
|
||||
.map(|(key, writable)| AccountUsed {
|
||||
key: key.to_string(),
|
||||
writable: *writable,
|
||||
})
|
||||
.collect_vec();
|
||||
Self {
|
||||
signature: value.signature.clone(),
|
||||
errors: serde_json::to_string(&errors).unwrap_or_default(),
|
||||
|
@ -277,7 +286,7 @@ impl From<&TransactionInfo> for PostgresTransactionInfo {
|
|||
first_notification_slot: value.first_notification_slot as i64,
|
||||
prioritization_fees: value.prioritization_fees.map(|x| x as i64),
|
||||
utc_timestamp: value.utc_timestamp,
|
||||
accounts_used,
|
||||
accounts_used: serde_json::to_string(&accounts_used).unwrap_or_default(),
|
||||
processed_slot: value.processed_slot.map(|x| x as i64),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use std::{collections::HashMap, hash::Hash, str::FromStr};
|
||||
use std::{collections::HashMap, hash::Hash};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use itertools::Itertools;
|
||||
use solana_sdk::{
|
||||
borsh0_10::try_from_slice_unchecked,
|
||||
compute_budget::{self, ComputeBudgetInstruction},
|
||||
|
@ -90,7 +91,7 @@ pub struct TransactionInfo {
|
|||
pub cu_requested: Option<u64>,
|
||||
pub prioritization_fees: Option<u64>,
|
||||
pub utc_timestamp: DateTime<Utc>,
|
||||
pub account_used: HashMap<Pubkey, char>,
|
||||
pub account_used: Vec<(String, bool)>,
|
||||
pub processed_slot: Option<Slot>,
|
||||
}
|
||||
|
||||
|
@ -116,13 +117,8 @@ impl TransactionInfo {
|
|||
let account_used = notification
|
||||
.accounts
|
||||
.iter()
|
||||
.map(|x| {
|
||||
(
|
||||
Pubkey::from_str(&x.account).unwrap(),
|
||||
if x.is_writable { 'w' } else { 'r' },
|
||||
)
|
||||
})
|
||||
.collect();
|
||||
.map(|x| (x.account.clone(), x.is_writable))
|
||||
.collect_vec();
|
||||
Self {
|
||||
signature: notification.signature.clone(),
|
||||
errors,
|
||||
|
|
Loading…
Reference in New Issue