소스 검색

Merge branch 'query-node/processor-handle-null-strings' into query_node_sumer_features_lint

ondratra 3 년 전
부모
커밋
f620922005
3개의 변경된 파일29개의 추가작업 그리고 22개의 파일을 삭제
  1. 20 2
      query-node/mappings/src/common.ts
  2. 7 18
      query-node/mappings/src/membership.ts
  3. 2 2
      query-node/mappings/src/workingGroup.ts

+ 20 - 2
query-node/mappings/src/common.ts

@@ -1,6 +1,6 @@
 import { SubstrateEvent, SubstrateExtrinsic, ExtrinsicArg } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
-import { u64 } from '@polkadot/types/primitive'
+import { u64, Bytes } from '@polkadot/types/primitive'
 import { fixBlockTimestamp } from './eventFix'
 
 // Asset
@@ -72,7 +72,7 @@ export async function prepareDataObject(
     typeId: contentParameters.type_id.toNumber(),
     size: customContentParameters.size_in_bytes.toNumber(),
     liaisonJudgement: LiaisonJudgement.PENDING, // judgement is pending at start; liaison id is set when content is accepted/rejected
-    ipfsContentId: contentParameters.ipfs_content_id.toUtf8(),
+    ipfsContentId: convertBytesToString(contentParameters.ipfs_content_id),
     joystreamContentId: customContentParameters.content_id.encode(),
 
     createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
@@ -208,3 +208,21 @@ class Logger {
 }
 
 export const logger = new Logger()
+
+/*
+  Helper for converting Bytes type to string
+*/
+export function convertBytesToString(b: Bytes | null): string {
+  if (!b) {
+    return ''
+  }
+
+  const result = Buffer.from(b.toU8a(true)).toString()
+
+  // prevent utf-8 null character
+  if (result.match(/^\0$/)) {
+    return ''
+  }
+
+  return result
+}

+ 7 - 18
query-node/mappings/src/membership.ts

@@ -1,12 +1,17 @@
 import { fixBlockTimestamp } from './eventFix'
-import BN from 'bn.js'
 import { Bytes } from '@polkadot/types'
 import { MemberId } from '@joystream/types/members'
 import { SubstrateEvent } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
 import { FindConditions } from 'typeorm'
 
-import { inconsistentState, logger, extractExtrinsicArgs, extractSudoCallParameters } from './common'
+import {
+  convertBytesToString,
+  inconsistentState,
+  logger,
+  extractExtrinsicArgs,
+  extractSudoCallParameters,
+} from './common'
 import { Members } from '../../generated/types'
 import { MembershipEntryMethod, Membership } from 'query-node'
 import { EntryMethod } from '@joystream/types/augment'
@@ -195,22 +200,6 @@ export async function members_MemberSetControllerAccount(db: DatabaseManager, ev
 
 /// ///////////////// Helpers ////////////////////////////////////////////////////
 
-/*
-  Helper for converting Bytes type to string
-*/
-function convertBytesToString(b: Bytes | null): string {
-  if (!b) {
-    return ''
-  }
-
-  const result = Buffer.from(b.toU8a(true))
-    .toString()
-    // eslint-disable-next-line no-control-regex
-    .replace(/\u0000/g, '')
-
-  return result
-}
-
 function convertEntryMethod(entryMethod: EntryMethod): MembershipEntryMethod {
   // paid membership?
   if (entryMethod.isPaid) {

+ 2 - 2
query-node/mappings/src/workingGroup.ts

@@ -4,7 +4,7 @@ import { FindConditions } from 'typeorm'
 import { Bytes } from '@polkadot/types'
 import { fixBlockTimestamp } from './eventFix'
 
-import { inconsistentState, logger, getNextId } from './common'
+import { convertBytesToString, inconsistentState, logger, getNextId } from './common'
 
 import { Channel, Worker, WorkerType } from 'query-node'
 import { GatewayWorkingGroup, StorageWorkingGroup } from '../../generated/types'
@@ -137,7 +137,7 @@ export async function workingGroup_WorkerStorageUpdated(
     return inconsistentState('Non-existing worker update requested', workerId)
   }
 
-  worker.metadata = newMetadata.toUtf8()
+  worker.metadata = convertBytesToString(newMetadata)
 
   await db.save<Worker>(worker)