Browse Source

query node - mappings for createdAt and updatedAt

ondratra 3 years ago
parent
commit
5659156353

+ 26 - 0
query-node/mappings/src/content/channel.ts

@@ -42,10 +42,17 @@ export async function content_ChannelCreated(db: DatabaseManager, event: Substra
 
   // create entity
   const channel = new Channel({
+    // main data
     id: channelId.toString(),
     isCensored: false,
     videos: [],
     createdInBlock: event.blockNumber,
+
+    // fill in auto-generated fields
+    createdAt: new Date(event.blockTimestamp.toNumber()),
+    updatedAt: new Date(event.blockTimestamp.toNumber()),
+
+    // integrate metadata
     ...protobufContent
   })
 
@@ -107,6 +114,9 @@ export async function content_ChannelUpdated(
     handleChannelRewardAccountChange(channel, newRewardAccount)
   }
 
+  // set last update time
+  channel.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save channel
   await db.save<Channel>(channel)
 
@@ -152,6 +162,9 @@ export async function content_ChannelCensored(
   // update channel
   channel.isCensored = true;
 
+  // set last update time
+  channel.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save channel
   await db.save<Channel>(channel)
 
@@ -178,6 +191,9 @@ export async function content_ChannelUncensored(
   // update channel
   channel.isCensored = false;
 
+  // set last update time
+  channel.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save channel
   await db.save<Channel>(channel)
 
@@ -208,9 +224,16 @@ export async function content_ChannelCategoryCreated(
 
   // create new channel category
   const channelCategory = new ChannelCategory({
+    // main data
     id: channelCategoryId.toString(),
     channels: [],
     createdInBlock: event.blockNumber,
+
+    // fill in auto-generated fields
+    createdAt: new Date(event.blockTimestamp.toNumber()),
+    updatedAt: new Date(event.blockTimestamp.toNumber()),
+
+    // integrate metadata
     ...protobufContent
   })
 
@@ -256,6 +279,9 @@ export async function content_ChannelCategoryUpdated(
     channelCategory[key] = value
   }
 
+  // set last update time
+  channelCategory.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save channel category
   await db.save<ChannelCategory>(channelCategory)
 

+ 11 - 0
query-node/mappings/src/content/curatorGroup.ts

@@ -18,9 +18,14 @@ export async function content_CuratorGroupCreated(
 
   // create new curator group
   const curatorGroup = new CuratorGroup({
+    // main data
     id: curatorGroupId.toString(),
     curatorIds: [],
     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()),
   })
 
   // save curator group
@@ -48,6 +53,9 @@ export async function content_CuratorGroupStatusSet(
   // update curator group
   curatorGroup.isActive = isActive.isTrue
 
+  // set last update time
+  curatorGroup.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save curator group
   await db.save<CuratorGroup>(curatorGroup)
 
@@ -73,6 +81,9 @@ export async function content_CuratorAdded(
   // update curator group
   curatorGroup.curatorIds.push(curatorId)
 
+  // set last update time
+  curatorGroup.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save curator group
   await db.save<CuratorGroup>(curatorGroup)
 

+ 33 - 1
query-node/mappings/src/content/video.ts

@@ -54,9 +54,16 @@ export async function content_VideoCategoryCreated(
 
   // create new video category
   const videoCategory = new VideoCategory({
-    id: videoCategoryId.toString(), // ChannelId
+    // main data
+    id: videoCategoryId.toString(),
     videos: [],
     createdInBlock: event.blockNumber,
+
+    // fill in auto-generated fields
+    createdAt: new Date(event.blockTimestamp.toNumber()),
+    updatedAt: new Date(event.blockTimestamp.toNumber()),
+
+    // integrate metadata
     ...protobufContent
   })
 
@@ -102,6 +109,9 @@ export async function content_VideoCategoryUpdated(
     videoCategory[key] = value
   }
 
+  // set last update time
+  videoCategory.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save video category
   await db.save<VideoCategory>(videoCategory)
 
@@ -169,10 +179,17 @@ export async function content_VideoCreated(
 
   // create new video
   const video = new Video({
+    // main data
     id: videoId.toString(),
     isCensored: false,
     channel,
     createdInBlock: event.blockNumber,
+
+    // fill in auto-generated fields
+    createdAt: new Date(event.blockTimestamp.toNumber()),
+    updatedAt: new Date(event.blockTimestamp.toNumber()),
+
+    // integrate metadata
     ...protobufContent
   })
 
@@ -235,6 +252,9 @@ export async function content_VideoUpdated(
 
   // TODO: handle situation when only assets changed
 
+  // set last update time
+  video.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save video
   await db.save<Video>(video)
 
@@ -284,6 +304,9 @@ export async function content_VideoCensored(
   // update video
   video.isCensored = true;
 
+  // set last update time
+  video.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save video
   await db.save<Video>(video)
 
@@ -310,6 +333,9 @@ export async function content_VideoUncensored(
   // update video
   video.isCensored = false;
 
+  // set last update time
+  video.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save video
   await db.save<Video>(video)
 
@@ -347,6 +373,9 @@ export async function content_FeaturedVideosSet(
   for (let video of toRemove) {
     video.isFeatured = false;
 
+    // set last update time
+    video.updatedAt = new Date(event.blockTimestamp.toNumber())
+
     await db.save<Video>(video)
   }
 
@@ -369,6 +398,9 @@ export async function content_FeaturedVideosSet(
   for (let video of videosToAdd) {
     video.isFeatured = true;
 
+    // set last update time
+    video.updatedAt = new Date(event.blockTimestamp.toNumber())
+
     await db.save<Video>(video)
   }
 

+ 20 - 0
query-node/mappings/src/membership.ts

@@ -44,6 +44,7 @@ export async function members_MemberRegistered(db: DatabaseManager, event_: Subs
 
   // create new membership
   const member = new Membership({
+    // main data
     id: memberId.toString(),
     rootAccount: accountId.toString(),
     controllerAccount: accountId.toString(),
@@ -53,6 +54,10 @@ export async function members_MemberRegistered(db: DatabaseManager, event_: Subs
     createdInBlock: event_.blockNumber,
     // TODO: in the runtime there is currently no way to distinguish distinguish `buy_membership`(method `Paid`) and `add_screened_member`(`Screening`)
     entry: MembershipEntryMethod.PAID,
+
+    // fill in auto-generated fields
+    createdAt: new Date(event_.blockTimestamp.toNumber()),
+    updatedAt: new Date(event_.blockTimestamp.toNumber()),
   })
 
   // save membership
@@ -73,6 +78,9 @@ export async function members_MemberUpdatedAboutText(db: DatabaseManager, event_
   // update member
   member.about = convertBytesToString(text)
 
+  // set last update time
+  member.updatedAt = new Date(event_.blockTimestamp.toNumber())
+
   // save member
   await db.save<Membership>(member)
 
@@ -91,6 +99,9 @@ export async function members_MemberUpdatedAvatar(db: DatabaseManager, event_: S
   // update member
   member.avatarUri = convertBytesToString(uri)
 
+  // set last update time
+  member.updatedAt = new Date(event_.blockTimestamp.toNumber())
+
   // save member
   await db.save<Membership>(member)
 
@@ -109,6 +120,9 @@ export async function members_MemberUpdatedHandle(db: DatabaseManager, event_: S
   // update member
   member.handle = convertBytesToString(handle)
 
+  // set last update time
+  member.updatedAt = new Date(event_.blockTimestamp.toNumber())
+
   // save member
   await db.save<Membership>(member)
 
@@ -126,6 +140,9 @@ export async function members_MemberSetRootAccount(db: DatabaseManager, event_:
   // update member
   member.rootAccount = newRootAccount.toString()
 
+  // set last update time
+  member.updatedAt = new Date(event_.blockTimestamp.toNumber())
+
   // save member
   await db.save<Membership>(member)
 
@@ -144,6 +161,9 @@ export async function members_MemberSetControllerAccount(db: DatabaseManager, ev
   // update member
   member.controllerAccount = newControllerAccount.toString()
 
+  // set last update time
+  member.updatedAt = new Date(event_.blockTimestamp.toNumber())
+
   // save member
   await db.save<Membership>(member)
 

+ 10 - 0
query-node/mappings/src/storage.ts

@@ -36,6 +36,10 @@ export async function data_directory_ContentAdded(db: DatabaseManager, event: Su
     const owner = convertStorageObjectOwner(storageObjectOwner)
     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())
+
     await db.save<DataObject>(dataObject)
   }
 
@@ -75,6 +79,9 @@ export async function data_directory_ContentAccepted(db: DatabaseManager, event:
   dataObject.liaisonId = storageProviderId
   dataObject.liaisonJudgement = LiaisonJudgement.ACCEPTED
 
+  // set last update time
+  dataObject.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save object
   await db.save<DataObject>(dataObject)
 
@@ -98,6 +105,9 @@ export async function data_directory_ContentRejected(db: DatabaseManager, event:
   dataObject.liaisonId = storageProviderId
   dataObject.liaisonJudgement = LiaisonJudgement.REJECTED
 
+  // set last update time
+  dataObject.updatedAt = new Date(event.blockTimestamp.toNumber())
+
   // save object
   await db.save<DataObject>(dataObject)