mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-08-03 12:44:08 +00:00
Update indexer template in codegen for block optimization changes (#464)
* Update indexer template for block optimization * Trim address strings in graph-node host API
This commit is contained in:
parent
32d5cd10d0
commit
edf72c1dd6
@ -44,7 +44,10 @@ import {
|
|||||||
Clients,
|
Clients,
|
||||||
EthClient,
|
EthClient,
|
||||||
UpstreamConfig,
|
UpstreamConfig,
|
||||||
ResultMeta
|
ResultMeta,
|
||||||
|
EthFullBlock,
|
||||||
|
EthFullTransaction,
|
||||||
|
ExtraEventData
|
||||||
} from '@cerc-io/util';
|
} from '@cerc-io/util';
|
||||||
{{#if (subgraphPath)}}
|
{{#if (subgraphPath)}}
|
||||||
import { GraphWatcher } from '@cerc-io/graph-node';
|
import { GraphWatcher } from '@cerc-io/graph-node';
|
||||||
@ -464,13 +467,13 @@ export class Indexer implements IndexerInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
async triggerIndexingOnEvent (event: Event): Promise<void> {
|
async triggerIndexingOnEvent (event: Event, extraData: ExtraEventData): Promise<void> {
|
||||||
const resultEvent = this.getResultEvent(event);
|
const resultEvent = this.getResultEvent(event);
|
||||||
|
|
||||||
{{#if (subgraphPath)}}
|
{{#if (subgraphPath)}}
|
||||||
console.time('time:indexer#processEvent-mapping_code');
|
console.time('time:indexer#processEvent-mapping_code');
|
||||||
// Call subgraph handler for event.
|
// Call subgraph handler for event.
|
||||||
await this._graphWatcher.handleEvent(resultEvent);
|
await this._graphWatcher.handleEvent(resultEvent, extraData);
|
||||||
console.timeEnd('time:indexer#processEvent-mapping_code');
|
console.timeEnd('time:indexer#processEvent-mapping_code');
|
||||||
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -478,9 +481,9 @@ export class Indexer implements IndexerInterface {
|
|||||||
await handleEvent(this, resultEvent);
|
await handleEvent(this, resultEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
async processEvent (event: Event): Promise<void> {
|
async processEvent (event: Event, extraData: ExtraEventData): Promise<void> {
|
||||||
// Trigger indexing of data based on the event.
|
// Trigger indexing of data based on the event.
|
||||||
await this.triggerIndexingOnEvent(event);
|
await this.triggerIndexingOnEvent(event, extraData);
|
||||||
}
|
}
|
||||||
|
|
||||||
async processBlock (blockProgress: BlockProgress): Promise<void> {
|
async processBlock (blockProgress: BlockProgress): Promise<void> {
|
||||||
@ -689,7 +692,12 @@ export class Indexer implements IndexerInterface {
|
|||||||
return this._baseIndexer.fetchEventsAndSaveBlocks(blocks, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
return this._baseIndexer.fetchEventsAndSaveBlocks(blocks, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchAndSaveFilteredEventsAndBlocks (startBlock: number, endBlock: number): Promise<{ blockProgress: BlockProgress, events: DeepPartial<Event>[] }[]> {
|
async fetchAndSaveFilteredEventsAndBlocks (startBlock: number, endBlock: number): Promise<{
|
||||||
|
blockProgress: BlockProgress,
|
||||||
|
events: DeepPartial<Event>[],
|
||||||
|
ethFullBlock: EthFullBlock;
|
||||||
|
ethFullTransactions: EthFullTransaction[];
|
||||||
|
}[]> {
|
||||||
return this._baseIndexer.fetchAndSaveFilteredEventsAndBlocks(startBlock, endBlock, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
return this._baseIndexer.fetchAndSaveFilteredEventsAndBlocks(startBlock, endBlock, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -697,7 +705,11 @@ export class Indexer implements IndexerInterface {
|
|||||||
return this._baseIndexer.fetchEventsForContracts(blockHash, blockNumber, addresses, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
return this._baseIndexer.fetchEventsForContracts(blockHash, blockNumber, addresses, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveBlockAndFetchEvents (block: DeepPartial<BlockProgress>): Promise<[BlockProgress, DeepPartial<Event>[]]> {
|
async saveBlockAndFetchEvents (block: DeepPartial<BlockProgress>): Promise<[
|
||||||
|
BlockProgress,
|
||||||
|
DeepPartial<Event>[],
|
||||||
|
EthFullTransaction[]
|
||||||
|
]> {
|
||||||
return this._saveBlockAndFetchEvents(block);
|
return this._saveBlockAndFetchEvents(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,11 +822,15 @@ export class Indexer implements IndexerInterface {
|
|||||||
blockNumber,
|
blockNumber,
|
||||||
blockTimestamp,
|
blockTimestamp,
|
||||||
parentHash
|
parentHash
|
||||||
}: DeepPartial<BlockProgress>): Promise<[BlockProgress, DeepPartial<Event>[]]> {
|
}: DeepPartial<BlockProgress>): Promise<[
|
||||||
|
BlockProgress,
|
||||||
|
DeepPartial<Event>[],
|
||||||
|
EthFullTransaction[]
|
||||||
|
]> {
|
||||||
assert(blockHash);
|
assert(blockHash);
|
||||||
assert(blockNumber);
|
assert(blockNumber);
|
||||||
|
|
||||||
const dbEvents = await this._baseIndexer.fetchEvents(blockHash, blockNumber, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
const { events: dbEvents, transactions } = await this._baseIndexer.fetchEvents(blockHash, blockNumber, this._eventSignaturesMap, this.parseEventNameAndArgs.bind(this));
|
||||||
|
|
||||||
const dbTx = await this._db.createTransactionRunner();
|
const dbTx = await this._db.createTransactionRunner();
|
||||||
try {
|
try {
|
||||||
@ -831,7 +847,7 @@ export class Indexer implements IndexerInterface {
|
|||||||
await dbTx.commitTransaction();
|
await dbTx.commitTransaction();
|
||||||
console.timeEnd(`time:indexer#_saveBlockAndFetchEvents-db-save-${blockNumber}`);
|
console.timeEnd(`time:indexer#_saveBlockAndFetchEvents-db-save-${blockNumber}`);
|
||||||
|
|
||||||
return [blockProgress, []];
|
return [blockProgress, [], transactions];
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await dbTx.rollbackTransaction();
|
await dbTx.rollbackTransaction();
|
||||||
throw error;
|
throw error;
|
||||||
|
@ -158,8 +158,7 @@ export const instantiate = async (
|
|||||||
const functionParamsPtr = await smartContractCall.functionParams;
|
const functionParamsPtr = await smartContractCall.functionParams;
|
||||||
let functionParams = __getArray(functionParamsPtr);
|
let functionParams = __getArray(functionParamsPtr);
|
||||||
|
|
||||||
console.log('ethereum.call params');
|
console.log('ethereum.call functionSignature:', functionSignature);
|
||||||
console.log('functionSignature:', functionSignature);
|
|
||||||
|
|
||||||
const abi = abis[contractName];
|
const abi = abis[contractName];
|
||||||
const contractAddressStringPtr = await contractAddress.toHexString();
|
const contractAddressStringPtr = await contractAddress.toHexString();
|
||||||
@ -284,7 +283,7 @@ export const instantiate = async (
|
|||||||
conversion: {
|
conversion: {
|
||||||
'typeConversion.stringToH160': async (s: number) => {
|
'typeConversion.stringToH160': async (s: number) => {
|
||||||
const string = __getString(s);
|
const string = __getString(s);
|
||||||
const address = utils.getAddress(string);
|
const address = utils.getAddress(string.trim());
|
||||||
const byteArray = utils.arrayify(address);
|
const byteArray = utils.arrayify(address);
|
||||||
|
|
||||||
const uint8ArrayId = await getIdOfType(TypeId.Uint8Array);
|
const uint8ArrayId = await getIdOfType(TypeId.Uint8Array);
|
||||||
|
Loading…
Reference in New Issue
Block a user