75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
import {
|
|
json,
|
|
BigInt,
|
|
ethereum,
|
|
log,
|
|
Bytes,
|
|
JSONValue,
|
|
JSONValueKind
|
|
} from '@graphprotocol/graph-ts'
|
|
import { MetadataUpdated, MetadataCreated } from '../@types/Metadata/Metadata'
|
|
|
|
import { Datatoken, MetadataUpdate } from '../@types/schema'
|
|
import { LZMA } from '../lzma/lzma'
|
|
|
|
export function handleMetadataEvent(
|
|
event: ethereum.Event,
|
|
dtAddress: string,
|
|
updatedBy: string,
|
|
created: boolean
|
|
): void {
|
|
const datatoken = Datatoken.load(dtAddress)
|
|
if (datatoken) {
|
|
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(),
|
|
false
|
|
)
|
|
}
|
|
export function jsonToString(val: JSONValue | null): string {
|
|
if (val != null && val.kind === JSONValueKind.STRING) {
|
|
return val.toString()
|
|
}
|
|
return ''
|
|
}
|
|
|
|
export function handleMetadataCreated(event: MetadataCreated): void {
|
|
const lzma = new LZMA()
|
|
const data = lzma.decode(event.params.data)
|
|
|
|
const obj = json.fromBytes(data.data as Bytes).toObject()
|
|
const did = obj.get('id')
|
|
const name = obj.get('service.attributes.main.name')
|
|
log.info('!!!!!!!!!!!!!!!!!!!!! DECOMPRESSED DATA {} {} {}', [
|
|
name.toString(),
|
|
did.toString(),
|
|
(data.data as Bytes).toString()
|
|
])
|
|
|
|
handleMetadataEvent(
|
|
event,
|
|
event.params.dataToken.toHexString(),
|
|
event.params.createdBy.toHexString(),
|
|
true
|
|
)
|
|
}
|