Browse Source

query-node: add members_MemberRegistered mapping

metmirr 4 years ago
parent
commit
75c1b11794
2 changed files with 40 additions and 0 deletions
  1. 1 0
      query-node/mappings/index.ts
  2. 39 0
      query-node/mappings/membership.ts

+ 1 - 0
query-node/mappings/index.ts

@@ -1,2 +1,3 @@
 export * from './mappings'
 export * from './mappingsContent'
+export * from './membership'

+ 39 - 0
query-node/mappings/membership.ts

@@ -0,0 +1,39 @@
+import BN from 'bn.js'
+import { DatabaseManager, SubstrateEvent } from '@dzlzv/hydra-indexer-lib/lib'
+
+import { Members } from '../generated/types'
+import { EntryMethod, Membership } from '../generated/graphql-server/src/modules/membership/membership.model'
+import { Block, Network } from '../generated/graphql-server/src/modules/block/block.model'
+
+// eslint-disable-next-line @typescript-eslint/naming-convention
+export async function members_MemberRegistered(db: DatabaseManager, substrateEvent: SubstrateEvent): Promise<void> {
+  const eventData = new Members.MemberRegisteredEvent(substrateEvent).data
+  const callArgs = new Members.BuyMembershipCall(substrateEvent).args
+
+  let block = await db.get(Block, { where: { block: eventData.ctx.blockNumber } })
+
+  if (!block) {
+    block = new Block({
+      network: Network.BABYLON,
+      block: substrateEvent.blockNumber,
+      // TODO: upgrade indexer-lib which support block timestamp: substrateEvent.timestamp
+      timestamp: new BN(Date.now()),
+    })
+    await db.save<Block>(block)
+  }
+
+  const member = new Membership({
+    id: eventData.memberId.toString(),
+    rootAccount: eventData.accountId.toString(),
+    controllerAccount: eventData.accountId.toString(),
+    handle: callArgs.handle.value.toString(),
+    about: callArgs.about.value.toString(),
+    avatarUri: callArgs.avatarUri.toString(),
+    registeredAtBlock: block,
+    // TODO: upgrade indexer-lib which support block timestamp: substrateEvent.timestamp
+    registeredAtTime: new Date(),
+    // entry: callArgs.paidTermsId,
+  })
+
+  await db.save<Membership>(member)
+}