mirror of
https://github.com/oceanprotocol/ocean-subgraph.git
synced 2024-12-02 05:57:29 +01:00
Issue28 track metadata updates (#47)
* add datasource for the metadata events. * handle metadata created/updated events, record (tx, blocknumber, timestamp, user) and update corresponding datatoken with update count. * add list of metadata updates to the datatoken entity * fix style issues * style fix. Co-authored-by: ssallam <travis@travis-ci.org>
This commit is contained in:
parent
2125e16e91
commit
bf158af3c8
2418
abis/Metadata.json
Normal file
2418
abis/Metadata.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -131,12 +131,26 @@ type Datatoken @entity {
|
||||
|
||||
holderCount: BigInt! # Number of addresses holding a balance of datatoken
|
||||
orderCount: BigInt! # Number of orders executed for this dataset
|
||||
metadataUpdateCount: BigInt!
|
||||
|
||||
createTime: Int! # Block time datatoken was created
|
||||
tx: Bytes # Datatoken creation transaction id
|
||||
|
||||
balances: [TokenBalance!] @derivedFrom(field: "datatokenId")
|
||||
orders: [TokenOrder!] @derivedFrom(field: "datatokenId")
|
||||
updates: [MetadataUpdate!] @derivedFrom(field: "datatokenId") # list of MetadataUpdate objects
|
||||
}
|
||||
|
||||
type MetadataUpdate @entity {
|
||||
id: ID! # update tx + datatokenAddress
|
||||
datatokenId: Datatoken!
|
||||
|
||||
datatokenAddress: String!
|
||||
userAddress: String!
|
||||
|
||||
block: Int!
|
||||
timestamp: Int!
|
||||
tx: Bytes!
|
||||
}
|
||||
|
||||
type TokenOrder @entity {
|
||||
|
@ -37,6 +37,7 @@ export function handleNewToken(event: TokenRegistered): void {
|
||||
|
||||
datatoken.holderCount = BigInt.fromI32(0)
|
||||
datatoken.orderCount = BigInt.fromI32(0)
|
||||
datatoken.metadataUpdateCount = BigInt.fromI32(0)
|
||||
|
||||
datatoken.createTime = event.block.timestamp.toI32()
|
||||
datatoken.tx = event.transaction.hash
|
||||
|
45
src/mappings/metadata.ts
Normal file
45
src/mappings/metadata.ts
Normal file
@ -0,0 +1,45 @@
|
||||
import { BigInt, ethereum } from '@graphprotocol/graph-ts'
|
||||
import { MetadataUpdated, MetadataCreated } from '../@types/Metadata/Metadata'
|
||||
|
||||
import { Datatoken, MetadataUpdate } from '../@types/schema'
|
||||
|
||||
export function handleMetadataEvent(
|
||||
event: ethereum.Event,
|
||||
dtAddress: string,
|
||||
updatedBy: string
|
||||
): void {
|
||||
const datatoken = Datatoken.load(dtAddress)
|
||||
|
||||
const tx = event.transaction.hash
|
||||
const id = tx.toHexString().concat('-').concat(dtAddress)
|
||||
const metadataUpdate = new MetadataUpdate(id)
|
||||
metadataUpdate.tx = tx
|
||||
metadataUpdate.block = event.block.number.toI32()
|
||||
metadataUpdate.timestamp = event.block.timestamp.toI32()
|
||||
metadataUpdate.datatokenAddress = dtAddress
|
||||
metadataUpdate.userAddress = updatedBy
|
||||
metadataUpdate.datatokenId = dtAddress
|
||||
|
||||
metadataUpdate.save()
|
||||
|
||||
datatoken.metadataUpdateCount = datatoken.metadataUpdateCount.plus(
|
||||
BigInt.fromI32(1)
|
||||
)
|
||||
datatoken.save()
|
||||
}
|
||||
|
||||
export function handleMetadataUpdated(event: MetadataUpdated): void {
|
||||
handleMetadataEvent(
|
||||
event,
|
||||
event.params.dataToken.toHexString(),
|
||||
event.params.updatedBy.toHexString()
|
||||
)
|
||||
}
|
||||
|
||||
export function handleMetadataCreated(event: MetadataCreated): void {
|
||||
handleMetadataEvent(
|
||||
event,
|
||||
event.params.dataToken.toHexString(),
|
||||
event.params.createdBy.toHexString()
|
||||
)
|
||||
}
|
@ -44,6 +44,28 @@ dataSources:
|
||||
eventHandlers:
|
||||
- event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
|
||||
handler: handleNewToken
|
||||
- kind: ethereum/contract
|
||||
name: Metadata
|
||||
network: polygon
|
||||
source:
|
||||
address: '0x80E63f73cAc60c1662f27D2DFd2EA834acddBaa8'
|
||||
abi: Metadata
|
||||
startBlock: 11005247
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.4
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/metadata.ts
|
||||
entities:
|
||||
- Metadata
|
||||
abis:
|
||||
- name: Metadata
|
||||
file: ./abis/Metadata.json
|
||||
eventHandlers:
|
||||
- event: MetadataCreated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataCreated
|
||||
- event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataUpdated
|
||||
templates:
|
||||
- kind: ethereum/contract
|
||||
name: Pool
|
||||
|
@ -44,6 +44,28 @@ dataSources:
|
||||
eventHandlers:
|
||||
- event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
|
||||
handler: handleNewToken
|
||||
- kind: ethereum/contract
|
||||
name: Metadata
|
||||
network: rinkeby
|
||||
source:
|
||||
address: '0xfd8a7b6297153397b7eb4356c47dbd381d58bff4'
|
||||
abi: Metadata
|
||||
startBlock: 7298808
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.4
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/metadata.ts
|
||||
entities:
|
||||
- Metadata
|
||||
abis:
|
||||
- name: Metadata
|
||||
file: ./abis/Metadata.json
|
||||
eventHandlers:
|
||||
- event: MetadataCreated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataCreated
|
||||
- event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataUpdated
|
||||
templates:
|
||||
- kind: ethereum/contract
|
||||
name: Pool
|
||||
|
@ -44,6 +44,28 @@ dataSources:
|
||||
eventHandlers:
|
||||
- event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
|
||||
handler: handleNewToken
|
||||
- kind: ethereum/contract
|
||||
name: Metadata
|
||||
network: ropsten
|
||||
source:
|
||||
address: '0x3cd7Ef1F207E1a46AAd7D5d7F5f0A5cF081Fc726'
|
||||
abi: Metadata
|
||||
startBlock: 9227595
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.4
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/metadata.ts
|
||||
entities:
|
||||
- Metadata
|
||||
abis:
|
||||
- name: Metadata
|
||||
file: ./abis/Metadata.json
|
||||
eventHandlers:
|
||||
- event: MetadataCreated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataCreated
|
||||
- event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataUpdated
|
||||
templates:
|
||||
- kind: ethereum/contract
|
||||
name: Pool
|
||||
|
@ -44,6 +44,28 @@ dataSources:
|
||||
eventHandlers:
|
||||
- event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
|
||||
handler: handleNewToken
|
||||
- kind: ethereum/contract
|
||||
name: Metadata
|
||||
network: mainnet
|
||||
source:
|
||||
address: '0x1a4b70d8c9DcA47cD6D0Fb3c52BB8634CA1C0Fdf'
|
||||
abi: Metadata
|
||||
startBlock: 11105610
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.4
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/metadata.ts
|
||||
entities:
|
||||
- Metadata
|
||||
abis:
|
||||
- name: Metadata
|
||||
file: ./abis/Metadata.json
|
||||
eventHandlers:
|
||||
- event: MetadataCreated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataCreated
|
||||
- event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataUpdated
|
||||
templates:
|
||||
- kind: ethereum/contract
|
||||
name: Pool
|
||||
|
Loading…
Reference in New Issue
Block a user