From f63d35b33639de5a8c1b5020c1db88e227d42e1f Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 19 Jun 2024 18:23:31 +0530 Subject: [PATCH] Codegen changes for avoiding eth_getLogs when no subgraph event handlers exist --- .../src/templates/config-template.handlebars | 3 +-- .../src/templates/indexer-template.handlebars | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/codegen/src/templates/config-template.handlebars b/packages/codegen/src/templates/config-template.handlebars index 88a0cb79..1f69980c 100644 --- a/packages/codegen/src/templates/config-template.handlebars +++ b/packages/codegen/src/templates/config-template.handlebars @@ -10,8 +10,7 @@ checkpointInterval = 2000 # Enable state creation - # CAUTION: Disable only if state creation is not desired or can be filled subsequently - enableState = true + enableState = false {{#if (subgraphPath)}} subgraphPath = "./subgraph-build" diff --git a/packages/codegen/src/templates/indexer-template.handlebars b/packages/codegen/src/templates/indexer-template.handlebars index b8d37d59..47c5cb35 100644 --- a/packages/codegen/src/templates/indexer-template.handlebars +++ b/packages/codegen/src/templates/indexer-template.handlebars @@ -829,6 +829,7 @@ export class Indexer implements IndexerInterface { {{/each}} } + // eslint-disable-next-line @typescript-eslint/no-empty-function _populateRelationsMap (): void { {{#each subgraphEntities as | subgraphEntity |}} {{#if subgraphEntity.relations}} @@ -867,7 +868,27 @@ export class Indexer implements IndexerInterface { assert(blockHash); assert(blockNumber); - const { events: dbEvents, transactions } = await this._baseIndexer.fetchEvents(blockHash, blockNumber, this.eventSignaturesMap, this.parseEventNameAndArgs.bind(this)); + {{#if (subgraphPath)}} + let dbEvents: DeepPartial[] = []; + let transactions: EthFullTransaction[] = []; + + // Fetch events and txs only if subgraph config has any event handlers + if (this._graphWatcher.eventHandlerExists) { + ({ events: dbEvents, transactions } = await this._baseIndexer.fetchEvents( + blockHash, + blockNumber, + this.eventSignaturesMap, + this.parseEventNameAndArgs.bind(this) + )); + } + {{else~}} + const { events: dbEvents, transactions } = await this._baseIndexer.fetchEvents( + blockHash, + blockNumber, + this.eventSignaturesMap, + this.parseEventNameAndArgs.bind(this) + ); + {{/if}} const dbTx = await this._db.createTransactionRunner(); try {