Browse Source

Update bounty totalFunding when withdrawing cherry

Theophile Sandoz 3 years ago
parent
commit
f50843766a
2 changed files with 24 additions and 0 deletions
  1. 2 0
      query-node/manifest.yml
  2. 22 0
      query-node/mappings/src/bounty.ts

+ 2 - 0
query-node/manifest.yml

@@ -869,6 +869,8 @@ mappings:
       handler: bounty_BountyMaxFundingReached
     - event: bounty.BountyFundingWithdrawal
       handler: bounty_BountyFundingWithdrawal
+    - event: bounty.BountyCreatorCherryWithdrawal
+      handler: bounty_BountyCreatorCherryWithdrawal
   extrinsicHandlers:
     # infer defaults here
     #- extrinsic: Balances.Transfer

+ 22 - 0
query-node/mappings/src/bounty.ts

@@ -8,6 +8,7 @@ import {
   BountyContractOpen,
   BountyContribution,
   BountyCreatedEvent,
+  BountyCreatorCherryWithdrawalEvent,
   BountyFundedEvent,
   BountyFundingLimited,
   BountyFundingPerpetual,
@@ -280,3 +281,24 @@ export async function bounty_BountyFundingWithdrawal({ event, store }: EventCont
 
   await store.save<BountyFundingWithdrawalEvent>(withdrawalInEvent)
 }
+
+export async function bounty_BountyCreatorCherryWithdrawal({
+  event,
+  store,
+}: EventContext & StoreContext): Promise<void> {
+  const cherryWithdrawalEvent = new BountyEvents.BountyCreatorCherryWithdrawalEvent(event)
+  const [bountyId] = cherryWithdrawalEvent.params
+  const eventTime = new Date(event.blockTimestamp)
+
+  // Update the bounty totalFunding
+  const bounty = await getBounty(store, bountyId)
+  bounty.updatedAt = eventTime
+  bounty.totalFunding = bounty.totalFunding.sub(bounty.cherry)
+
+  await store.save<Bounty>(bounty)
+
+  // Record the event
+  const withdrawalInEvent = new BountyCreatorCherryWithdrawalEvent({ ...genericEventFields(event), bounty })
+
+  await store.save<BountyCreatorCherryWithdrawalEvent>(withdrawalInEvent)
+}