Hardcoded eventIndex just for testing.

This commit is contained in:
Maria Carmina 2023-04-06 23:14:13 +03:00
parent 3f73362589
commit 352d2ffc18
3 changed files with 60 additions and 27 deletions

View File

@ -109,7 +109,12 @@ export function handleOrderStarted(event: OrderStarted): void {
} }
export function handlerOrderReused(event: OrderReused): void { export function handlerOrderReused(event: OrderReused): void {
const order = searchOrderForEvent(event) const order = searchOrderForEvent(
event.transaction.hash.toHex(),
event.address.toHex(),
event.transaction.from.toHex(),
event.logIndex.toI32()
)
if (!order) return if (!order) return
@ -245,15 +250,26 @@ export function handleProviderFee(event: ProviderFee): void {
}", "r": "${event.params.r.toHexString()}", "s": "${event.params.s.toHexString()}", "validUntil": "${ }", "r": "${event.params.r.toHexString()}", "s": "${event.params.s.toHexString()}", "validUntil": "${
event.params.validUntil event.params.validUntil
}"}` }"}`
log.info('provider fee: {}', [providerFee])
log.info('event address: {}', [event.address.toHexString()])
const order = searchOrderForEvent(event) const order = searchOrderForEvent(
event.transaction.hash.toHex(),
event.address.toHex(),
event.transaction.from.toHex(),
event.logIndex.toI32()
)
if (order) { if (order) {
order.providerFee = providerFee order.providerFee = providerFee
order.providerFeeValidUntil = event.params.validUntil order.providerFeeValidUntil = event.params.validUntil
order.save() order.save()
} else { } else {
const orderReuse = searchOrderResusedForEvent(event) const orderReuse = searchOrderResusedForEvent(
event.transaction.hash.toHex(),
event.address.toHex(),
event.logIndex.toI32()
)
if (orderReuse) { if (orderReuse) {
orderReuse.providerFee = providerFee orderReuse.providerFee = providerFee
orderReuse.providerFeeValidUntil = event.params.validUntil orderReuse.providerFeeValidUntil = event.params.validUntil

View File

@ -1,5 +1,5 @@
import { Order, OrderReuse } from '../../@types/schema' import { Order, OrderReuse } from '../../@types/schema'
import { ethereum, log } from '@graphprotocol/graph-ts' import { log } from '@graphprotocol/graph-ts'
export function getOrderId( export function getOrderId(
tx: string, tx: string,
@ -34,49 +34,65 @@ export function getOrder(
return newOrder return newOrder
} }
export function searchOrderForEvent(event: ethereum.Event): Order { export function searchOrderForEvent(
let firstEventIndex = event.logIndex.toI32() - 1 transactionHash: string,
log.info('firstEventIndex on simple order: ', [firstEventIndex.toString()]) address: string,
while (true) { transactionFrom: string,
eventIndex: number
): Order {
let firstEventIndex = eventIndex - 1
log.info('firstEventIndex on simple order: {}', [
firstEventIndex.toString().replace('0.0', '0')
])
while (firstEventIndex >= 0) {
const orderId = getOrderId( const orderId = getOrderId(
event.transaction.hash.toHex(), transactionHash,
event.address.toHex(), address,
event.transaction.from.toHex(), transactionFrom,
firstEventIndex.toString() firstEventIndex.toString().replace('0.0', '0')
) )
log.info('orderId as trial: ', [orderId]) log.info('orderId as trial: {}', [orderId])
const order = Order.load(orderId) const order = Order.load(orderId)
if (order !== null) { if (order !== null) {
log.info('order datatoken: ', [order.datatoken]) log.info('order datatoken: {}', [order.datatoken])
} }
log.info('event address: ', [event.address.toString()]) log.info('event address: {}', [address])
if (order !== null && order.datatoken === event.address.toString()) { if (order !== null && order.datatoken === address) {
return order return order
} }
firstEventIndex-- firstEventIndex--
} }
return getOrder(
transactionHash,
address,
transactionFrom,
firstEventIndex.toString().replace('0.0', '0')
)
} }
export function searchOrderResusedForEvent(event: ethereum.Event): OrderReuse { export function searchOrderResusedForEvent(
let firstEventIndex = event.logIndex.toI32() - 1 transactionHash: string,
log.info('firstEventIndex on simple order: ', [firstEventIndex.toString()]) eventAddress: string,
while (true) { eventIndex: number
const orderReused = OrderReuse.load( ): OrderReuse {
`${event.transaction.hash.toHex()}-${firstEventIndex}` let firstEventIndex = eventIndex - 1
) log.info('firstEventIndex on simple order: {}', [firstEventIndex.toString()])
while (firstEventIndex >= 0) {
const orderReused = OrderReuse.load(`${transactionHash}-${firstEventIndex}`)
if (orderReused !== null) { if (orderReused !== null) {
log.info('order reused order: ', [orderReused.order]) log.info('order reused order: {}', [orderReused.order])
const order = Order.load(orderReused.order) const order = Order.load(orderReused.order)
if (order !== null) { if (order !== null) {
log.info('order datatoken: ', [order.datatoken]) log.info('order datatoken: ', [order.datatoken])
} }
log.info('event address: ', [event.address.toString()]) log.info('event address: {}', [eventAddress])
if ( if (
orderReused !== null && orderReused !== null &&
order !== null && order !== null &&
order.datatoken === event.address.toString() order.datatoken === eventAddress
) { ) {
return orderReused return orderReused
} }
@ -84,4 +100,5 @@ export function searchOrderResusedForEvent(event: ethereum.Event): OrderReuse {
firstEventIndex-- firstEventIndex--
} }
return new OrderReuse(`${transactionHash}-${eventIndex.toString()}`)
} }

View File

@ -320,7 +320,7 @@ describe('Simple Publish & consume test', async () => {
method: 'POST', method: 'POST',
body: JSON.stringify(query) body: JSON.stringify(query)
}) })
await sleep(6000) await sleep(3000)
const queryResult = await response.json() const queryResult = await response.json()
console.log('queryResult: ', queryResult) console.log('queryResult: ', queryResult)