Mappings
Mappings describe how Substate events and transactions should be handled by Hydra processor
mappings:
eventHandlers:
- event: balances.Transfer
handler: balancesTransfer
extrinsicHandlers:
- extrinsic: timestamp.set
handler: timestampCallimport {
Transfer,
} from '../generated/graphql-server/model'
// run 'NODE_URL=<RPC_ENDPOINT> EVENTS=<comma separated list of events> yarn codegen:mappings-types'
// to genenerate typescript classes for events, such as Balances.TransferEvent
import { Balances } from './generated/types'
import BN from 'bn.js'
import {
ExtrinsicContext,
EventContext,
BlockContext,
StoreContext,
} from '@dzlzv/hydra-common'
export async function balancesTransfer({
store,
event,
block,
extrinsic,
}: EventContext & StoreContext) {
const transfer = new Transfer()
const [from, to, value] = new Balances.TransferEvent(event).params
transfer.from = from.toHuman()
transfer.to = to.toHuman()
transfer.value = value.toBn()
transfer.tip = extrinsic ? new BN(extrinsic.tip.toString(10)) : new BN(0)
transfer.insertedAt = new Date(block.timestamp)
transfer.block = block.height
transfer.comment = `Transferred ${transfer.value} from ${transfer.from} to ${transfer.to}`
transfer.timestamp = new BN(block.timestamp)
console.log(`Saving transfer: ${JSON.stringify(transfer, null, 2)}`)
await store.save<Transfer>(transfer)
}
Last updated