From 2c453f6d39f80ea3a8ef99c6f2f7d801fe6768e6 Mon Sep 17 00:00:00 2001 From: Nikhil Acharya <128666399+nikhil-helius@users.noreply.github.com> Date: Sat, 3 Jun 2023 09:46:14 +0530 Subject: [PATCH] store data as is in the database (#44) --- digital_asset_types/src/dapi/common/asset.rs | 19 +++++++++++++++++-- .../program_transformers/bubblegum/mint_v1.rs | 3 +-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/digital_asset_types/src/dapi/common/asset.rs b/digital_asset_types/src/dapi/common/asset.rs index 34af49868..add8b6a77 100644 --- a/digital_asset_types/src/dapi/common/asset.rs +++ b/digital_asset_types/src/dapi/common/asset.rs @@ -127,6 +127,13 @@ pub fn safe_select<'a>( .and_then(|v| v.pop()) } +fn sanitize(val: Value) -> Result { + match val { + Value::String(s) => Ok(s.trim().replace("\0", "").to_string()), + _ => Err("Provided value is not a string"), + } +} + pub fn v1_content_from_json( asset_data: &asset_data::Model, cdn_prefix: Option, @@ -141,7 +148,11 @@ pub fn v1_content_from_json( let mut meta: MetadataMap = MetadataMap::new(); let name = safe_select(chain_data_selector, "$.name"); if let Some(name) = name { - meta.set_item("name", name.clone()); + if let Ok(name) = sanitize(name.clone()) { + meta.set_item("name", Value::String(name)); + } else { + meta.set_item("name", name.clone()); + } } let desc = safe_select(selector, "$.description"); if let Some(desc) = desc { @@ -149,7 +160,11 @@ pub fn v1_content_from_json( } let symbol = safe_select(chain_data_selector, "$.symbol"); if let Some(symbol) = symbol { - meta.set_item("symbol", symbol.clone()); + if let Ok(symbol) = sanitize(symbol.clone()) { + meta.set_item("symbol", Value::String(symbol)); + } else { + meta.set_item("symbol", symbol.clone()); + } } let symbol = safe_select(selector, "$.attributes"); if let Some(symbol) = symbol { diff --git a/nft_ingester/src/program_transformers/bubblegum/mint_v1.rs b/nft_ingester/src/program_transformers/bubblegum/mint_v1.rs index 5f6fddbff..748112e62 100644 --- a/nft_ingester/src/program_transformers/bubblegum/mint_v1.rs +++ b/nft_ingester/src/program_transformers/bubblegum/mint_v1.rs @@ -61,7 +61,7 @@ where let id_bytes = id.to_bytes(); let slot_i = bundle.slot as i64; let uri = metadata.uri.trim().replace('\0', ""); - let mut chain_data = ChainDataV1 { + let chain_data = ChainDataV1 { name: metadata.name.clone(), symbol: metadata.symbol.clone(), edition_nonce: metadata.edition_nonce, @@ -73,7 +73,6 @@ where total: u.total, }), }; - chain_data.sanitize(); let chain_data_json = serde_json::to_value(chain_data) .map_err(|e| IngesterError::DeserializationError(e.to_string()))?; let chain_mutability = match metadata.is_mutable {