Browse Source

query node - mappings blockTimestamp workaround

ondratra 3 years ago
parent
commit
9e078ed522

+ 8 - 7
query-node/mappings/src/content/channel.ts

@@ -1,3 +1,4 @@
+import { fixBlockTimestamp } from '../eventFix'
 import { SubstrateEvent } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
 import ISO6391 from 'iso-639-1';
@@ -48,8 +49,8 @@ export async function content_ChannelCreated(db: DatabaseManager, event: Substra
     createdInBlock: event.blockNumber,
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
 
     // integrate metadata
     ...protobufContent
@@ -114,7 +115,7 @@ export async function content_ChannelUpdated(
   }
 
   // set last update time
-  channel.updatedAt = new Date(event.blockTimestamp.toNumber())
+  channel.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save channel
   await db.save<Channel>(channel)
@@ -164,7 +165,7 @@ export async function content_ChannelCensorshipStatusUpdated(
   channel.isCensored = isCensored.isTrue;
 
   // set last update time
-  channel.updatedAt = new Date(event.blockTimestamp.toNumber())
+  channel.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save channel
   await db.save<Channel>(channel)
@@ -202,8 +203,8 @@ export async function content_ChannelCategoryCreated(
     createdInBlock: event.blockNumber,
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
 
     // integrate metadata
     ...protobufContent
@@ -254,7 +255,7 @@ export async function content_ChannelCategoryUpdated(
   }
 
   // set last update time
-  channelCategory.updatedAt = new Date(event.blockTimestamp.toNumber())
+  channelCategory.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save channel category
   await db.save<ChannelCategory>(channelCategory)

+ 5 - 4
query-node/mappings/src/content/curatorGroup.ts

@@ -1,3 +1,4 @@
+import { fixBlockTimestamp } from '../eventFix'
 import { SubstrateEvent } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
 import { FindConditions } from 'typeorm'
@@ -25,8 +26,8 @@ export async function content_CuratorGroupCreated(
     isActive: false, // runtime creates inactive curator groups by default
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
   })
 
   // save curator group
@@ -55,7 +56,7 @@ export async function content_CuratorGroupStatusSet(
   curatorGroup.isActive = isActive.isTrue
 
   // set last update time
-  curatorGroup.updatedAt = new Date(event.blockTimestamp.toNumber())
+  curatorGroup.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save curator group
   await db.save<CuratorGroup>(curatorGroup)
@@ -83,7 +84,7 @@ export async function content_CuratorAdded(
   curatorGroup.curatorIds.push(curatorId)
 
   // set last update time
-  curatorGroup.updatedAt = new Date(event.blockTimestamp.toNumber())
+  curatorGroup.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save curator group
   await db.save<CuratorGroup>(curatorGroup)

+ 10 - 9
query-node/mappings/src/content/video.ts

@@ -1,3 +1,4 @@
+import { fixBlockTimestamp } from '../eventFix'
 import { SubstrateEvent } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
 import BN from 'bn.js'
@@ -61,8 +62,8 @@ export async function content_VideoCategoryCreated(
     createdInBlock: event.blockNumber,
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
 
     // integrate metadata
     ...protobufContent
@@ -111,7 +112,7 @@ export async function content_VideoCategoryUpdated(
   }
 
   // set last update time
-  videoCategory.updatedAt = new Date(event.blockTimestamp.toNumber())
+  videoCategory.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save video category
   await db.save<VideoCategory>(videoCategory)
@@ -187,8 +188,8 @@ export async function content_VideoCreated(
     createdInBlock: event.blockNumber,
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
 
     // integrate metadata
     ...protobufContent
@@ -252,7 +253,7 @@ export async function content_VideoUpdated(
   }
 
   // set last update time
-  video.updatedAt = new Date(event.blockTimestamp.toNumber())
+  video.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save video
   await db.save<Video>(video)
@@ -305,7 +306,7 @@ export async function content_VideoCensorshipStatusUpdated(
   video.isCensored = isCensored.isTrue;
 
   // set last update time
-  video.updatedAt = new Date(event.blockTimestamp.toNumber())
+  video.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save video
   await db.save<Video>(video)
@@ -345,7 +346,7 @@ export async function content_FeaturedVideosSet(
     video.isFeatured = false;
 
     // set last update time
-    video.updatedAt = new Date(event.blockTimestamp.toNumber())
+    video.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
     await db.save<Video>(video)
   }
@@ -372,7 +373,7 @@ export async function content_FeaturedVideosSet(
     video.isFeatured = true;
 
     // set last update time
-    video.updatedAt = new Date(event.blockTimestamp.toNumber())
+    video.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
     await db.save<Video>(video)
   }

+ 6 - 0
query-node/mappings/src/eventFix.ts

@@ -0,0 +1,6 @@
+import BN from 'bn.js'
+
+// Workaround for https://github.com/Joystream/hydra/issues/326 . This file can be removed after it's fixed
+export function fixBlockTimestamp(blockTimestamp: unknown): BN {
+    return new BN(blockTimestamp as string)
+}

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

@@ -1,3 +1,4 @@
+import { fixBlockTimestamp } from './eventFix'
 import BN from 'bn.js'
 import { Bytes } from '@polkadot/types'
 import { MemberId } from '@joystream/types/members'
@@ -32,8 +33,8 @@ export async function members_MemberRegistered(db: DatabaseManager, event: Subst
     entry: convertEntryMethod(entryMethod),
 
     // fill in auto-generated fields
-    createdAt: new Date(event.blockTimestamp.toNumber()),
-    updatedAt: new Date(event.blockTimestamp.toNumber()),
+    createdAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
+    updatedAt: new Date(fixBlockTimestamp(event.blockTimestamp).toNumber()),
   })
 
   // save membership
@@ -55,7 +56,7 @@ export async function members_MemberUpdatedAboutText(db: DatabaseManager, event:
   member.about = convertBytesToString(text)
 
   // set last update time
-  member.updatedAt = new Date(event.blockTimestamp.toNumber())
+  member.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save member
   await db.save<Membership>(member)
@@ -76,7 +77,7 @@ export async function members_MemberUpdatedAvatar(db: DatabaseManager, event: Su
   member.avatarUri = convertBytesToString(uri)
 
   // set last update time
-  member.updatedAt = new Date(event.blockTimestamp.toNumber())
+  member.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save member
   await db.save<Membership>(member)
@@ -97,7 +98,7 @@ export async function members_MemberUpdatedHandle(db: DatabaseManager, event: Su
   member.handle = convertBytesToString(handle)
 
   // set last update time
-  member.updatedAt = new Date(event.blockTimestamp.toNumber())
+  member.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save member
   await db.save<Membership>(member)
@@ -117,7 +118,7 @@ export async function members_MemberSetRootAccount(db: DatabaseManager, event: S
   member.rootAccount = newRootAccount.toString()
 
   // set last update time
-  member.updatedAt = new Date(event.blockTimestamp.toNumber())
+  member.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save member
   await db.save<Membership>(member)
@@ -138,7 +139,7 @@ export async function members_MemberSetControllerAccount(db: DatabaseManager, ev
   member.controllerAccount = newControllerAccount.toString()
 
   // set last update time
-  member.updatedAt = new Date(event.blockTimestamp.toNumber())
+  member.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save member
   await db.save<Membership>(member)

+ 4 - 3
query-node/mappings/src/storage.ts

@@ -1,3 +1,4 @@
+import { fixBlockTimestamp } from './eventFix'
 import { SubstrateEvent } from '@dzlzv/hydra-common'
 import { DatabaseManager } from '@dzlzv/hydra-db-utils'
 import { FindConditions, In } from 'typeorm'
@@ -37,8 +38,8 @@ export async function data_directory_ContentAdded(db: DatabaseManager, event: Su
     const dataObject = await prepareDataObject(parameters, event.blockNumber, owner)
 
     // fill in auto-generated fields
-    dataObject.createdAt = new Date(event.blockTimestamp.toNumber())
-    dataObject.updatedAt = new Date(event.blockTimestamp.toNumber())
+    dataObject.createdAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
+    dataObject.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
     await db.save<DataObject>(dataObject)
   }
@@ -82,7 +83,7 @@ export async function data_directory_ContentAccepted(db: DatabaseManager, event:
   dataObject.liaisonJudgement = LiaisonJudgement.ACCEPTED
 
   // set last update time
-  dataObject.updatedAt = new Date(event.blockTimestamp.toNumber())
+  dataObject.updatedAt = new Date(fixBlockTimestamp(event.blockTimestamp).toNumber())
 
   // save object
   await db.save<DataObject>(dataObject)