From e95eb6effbbddc658fb8ee9178daefcdd1ac718d Mon Sep 17 00:00:00 2001 From: rtso <8248583+rtso@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:00:18 -0400 Subject: [PATCH] Make owner_address null too --- .../v2_fungible_asset_activities.rs | 58 ++++++++++--------- .../down.sql | 3 +- .../up.sql | 3 +- rust/processor/src/db/postgres/schema.rs | 2 +- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/rust/processor/src/db/common/models/fungible_asset_models/v2_fungible_asset_activities.rs b/rust/processor/src/db/common/models/fungible_asset_models/v2_fungible_asset_activities.rs index 18157d1d9..9dd5afbc8 100644 --- a/rust/processor/src/db/common/models/fungible_asset_models/v2_fungible_asset_activities.rs +++ b/rust/processor/src/db/common/models/fungible_asset_models/v2_fungible_asset_activities.rs @@ -42,7 +42,7 @@ pub type EventToCoinType = AHashMap; pub struct FungibleAssetActivity { pub transaction_version: i64, pub event_index: i64, - pub owner_address: String, + pub owner_address: Option, pub storage_id: String, pub asset_type: Option, pub is_frozen: Option, @@ -105,32 +105,34 @@ impl FungibleAssetActivity { // The event account address will also help us find fungible store which tells us where to find // the metadata - if let Some(object_metadata) = object_aggregated_data_mapping.get(&storage_id) { - let object_core = &object_metadata.object.object_core; - // The FungibleStore might not exist in the transaction if it's a secondary store that got burnt - let maybe_fungible_asset = object_metadata.fungible_asset_store.as_ref(); - let maybe_asset_type = - maybe_fungible_asset.map(|fa| fa.metadata.get_reference_address()); + let maybe_object_metadata = object_aggregated_data_mapping.get(&storage_id); + // The ObjectCore might not exist in the transaction if the object got deleted + let maybe_owner_address = maybe_object_metadata + .map(|metadata| &metadata.object.object_core) + .map(|object_core| object_core.get_owner_address()); + // The FungibleStore might not exist in the transaction if it's a secondary store that got burnt + let maybe_asset_type = maybe_object_metadata + .and_then(|metadata| metadata.fungible_asset_store.as_ref()) + .map(|fa| fa.metadata.get_reference_address()); - return Ok(Some(Self { - transaction_version: txn_version, - event_index, - owner_address: object_core.get_owner_address(), - storage_id: storage_id.clone(), - asset_type: maybe_asset_type, - is_frozen, - amount, - type_: event_type.clone(), - is_gas_fee: false, - gas_fee_payer_address: None, - is_transaction_success: true, - entry_function_id_str: entry_function_id_str.clone(), - block_height, - token_standard: TokenStandard::V2.to_string(), - transaction_timestamp: txn_timestamp, - storage_refund_amount: BigDecimal::zero(), - })); - } + return Ok(Some(Self { + transaction_version: txn_version, + event_index, + owner_address: maybe_owner_address, + storage_id: storage_id.clone(), + asset_type: maybe_asset_type, + is_frozen, + amount, + type_: event_type.clone(), + is_gas_fee: false, + gas_fee_payer_address: None, + is_transaction_success: true, + entry_function_id_str: entry_function_id_str.clone(), + block_height, + token_standard: TokenStandard::V2.to_string(), + transaction_timestamp: txn_timestamp, + storage_refund_amount: BigDecimal::zero(), + })); } Ok(None) } @@ -187,7 +189,7 @@ impl FungibleAssetActivity { Ok(Some(Self { transaction_version: txn_version, event_index, - owner_address, + owner_address: Some(owner_address), storage_id, asset_type: Some(coin_type), is_frozen: None, @@ -234,7 +236,7 @@ impl FungibleAssetActivity { Self { transaction_version, event_index: v1_activity.event_index.unwrap(), - owner_address: v1_activity.owner_address, + owner_address: Some(v1_activity.owner_address), storage_id, asset_type: Some(v1_activity.coin_type), is_frozen: None, diff --git a/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/down.sql b/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/down.sql index 0cc5930a8..cb35a6d57 100644 --- a/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/down.sql +++ b/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/down.sql @@ -1,2 +1,3 @@ -- This file should undo anything in `up.sql` -ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN asset_type SET NOT NULL; \ No newline at end of file +ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN asset_type SET NOT NULL; +ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN owner_address SET NOT NULL; \ No newline at end of file diff --git a/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/up.sql b/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/up.sql index d140425ba..396088038 100644 --- a/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/up.sql +++ b/rust/processor/src/db/postgres/migrations/2024-07-10-203513_make_asset_type_nullable/up.sql @@ -1,2 +1,3 @@ -- Your SQL goes here -ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN asset_type DROP NOT NULL; \ No newline at end of file +ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN asset_type DROP NOT NULL; +ALTER TABLE IF EXISTS fungible_asset_activities ALTER COLUMN owner_address DROP NOT NULL; \ No newline at end of file diff --git a/rust/processor/src/db/postgres/schema.rs b/rust/processor/src/db/postgres/schema.rs index aae068f33..8c9508479 100644 --- a/rust/processor/src/db/postgres/schema.rs +++ b/rust/processor/src/db/postgres/schema.rs @@ -771,7 +771,7 @@ diesel::table! { transaction_version -> Int8, event_index -> Int8, #[max_length = 66] - owner_address -> Varchar, + owner_address -> Nullable, #[max_length = 66] storage_id -> Varchar, #[max_length = 1000]