ocean-subgraph/src/mappings/erc20Templates.ts

127 lines
3.5 KiB
TypeScript
Raw Normal View History

2022-02-17 13:00:54 +01:00
import { Order, Nft } from '../@types/schema'
2022-02-17 11:26:05 +01:00
import { BigInt } from '@graphprotocol/graph-ts'
import {
NewPaymentCollector,
OrderStarted,
2022-02-17 11:26:05 +01:00
PublishMarketFee,
PublishMarketFeeChanged
} from '../@types/templates/ERC20Template/ERC20Template'
2021-11-26 09:04:14 +01:00
import { integer } from './utils/constants'
import { weiToDecimal } from './utils/generic'
import { addOrder } from './utils/globalUtils'
2021-11-26 09:04:14 +01:00
import { getToken } from './utils/tokenUtils'
import { getUser } from './utils/userUtils'
2021-12-02 13:10:23 +01:00
function getOrderId(
tx: string,
tokenAddress: string,
fromAddress: string
): string {
2021-11-26 09:04:14 +01:00
return `${tx}-${tokenAddress}-${fromAddress}`
}
export function handleOrderStarted(event: OrderStarted): void {
const order = new Order(
getOrderId(
event.transaction.hash.toHex(),
event.address.toHex(),
event.transaction.from.toHex()
)
)
const token = getToken(event.address.toHex())
2022-01-31 11:43:50 +01:00
order.datatoken = token.id
2021-11-26 09:04:14 +01:00
token.orderCount = token.orderCount.plus(integer.ONE)
const consumer = getUser(event.params.consumer.toHex())
order.consumer = consumer.id
const payer = getUser(event.params.payer.toHex())
payer.totalOrders = payer.totalOrders.plus(integer.ONE)
payer.save()
2021-11-26 09:04:14 +01:00
order.payer = payer.id
order.amount = weiToDecimal(
event.params.amount.toBigDecimal(),
token.decimals
)
2022-01-31 11:43:50 +01:00
order.serviceIndex = event.params.serviceIndex.toI32()
2021-11-26 09:04:14 +01:00
const publishMarket = getUser(event.params.publishMarketAddress.toHex())
order.publishingMarket = publishMarket.id
// const consumeMarket = getUser(event.params..toHex())
// order.consumerMarket = consumeMarket.id
2021-11-26 09:04:14 +01:00
order.createdTimestamp = event.block.timestamp.toI32()
2021-12-02 12:08:47 +01:00
order.tx = event.transaction.hash.toHex()
2021-11-26 09:04:14 +01:00
order.block = event.block.number.toI32()
order.save()
token.save()
addOrder()
2022-02-17 13:00:54 +01:00
if (token.nft) {
const nft = Nft.load(token.nft as string) as Nft
if (nft) {
nft.orderCount = nft.orderCount.plus(integer.ONE)
nft.save()
}
const owner = getUser(nft.owner)
owner.totalSales = owner.totalSales.plus(integer.ONE)
owner.save()
2022-02-17 13:00:54 +01:00
}
2021-11-26 09:04:14 +01:00
}
export function handleNewPaymentCollector(event: NewPaymentCollector): void {}
export function handlePublishMarketFee(event: PublishMarketFee): void {}
2022-02-17 11:26:05 +01:00
export function handlePublishMarketFeeChanged(
event: PublishMarketFeeChanged
): void {
const token = getToken(event.address.toHex())
if (token != null) {
token.publishMarketFeeAddress =
event.params.PublishMarketFeeAddress.toHexString()
token.publishMarketFeeToken =
event.params.PublishMarketFeeToken.toHexString()
let decimals = BigInt.fromI32(18).toI32()
if (
token.publishMarketFeeToken !=
'0x0000000000000000000000000000000000000000'
2022-02-18 07:55:02 +01:00
){
const token = getToken(event.params.PublishMarketFeeToken.toHexString())
2022-02-17 11:26:05 +01:00
decimals = BigInt.fromI32(token.decimals).toI32()
2022-02-18 07:55:02 +01:00
}
2022-02-17 11:26:05 +01:00
token.publishMarketFeeAmmount = weiToDecimal(
event.params.PublishMarketFeeAmount.toBigDecimal(),
decimals
)
token.save()
// TODO - shold we have a history
}
}
2021-12-02 13:10:23 +01:00
// export function handlePublishMarketFees(event: PublishMarketFees): void {
// const order = Order.load(
// getOrderId(
// event.transaction.hash.toHex(),
// event.address.toHex(),
// event.transaction.from.toHex()
// )
// )
2021-11-26 09:04:14 +01:00
2021-12-02 13:10:23 +01:00
// order.save()
// }
2021-11-26 09:04:14 +01:00
2021-12-02 13:10:23 +01:00
// export function handleConsumeMarketFees(event: ConsumeMarketFees): void {
// const order = Order.load(
// getOrderId(
// event.transaction.hash.toHex(),
// event.address.toHex(),
// event.transaction.from.toHex()
// )
// )
2021-11-26 09:04:14 +01:00
2021-12-02 13:10:23 +01:00
// order.save()
// }