diff --git a/src/core/indexer.ts b/src/core/indexer.ts index d1af99f..46e2f74 100644 --- a/src/core/indexer.ts +++ b/src/core/indexer.ts @@ -66,6 +66,7 @@ export class StarknetIndexer { private progressStats: ProgressStats; private progressUiShutdown?: () => void; + private hasExistingState: boolean = false; constructor(private config: IndexerConfig) { this.logger = config.logger || new ConsoleLogger(config.logLevel); @@ -268,6 +269,7 @@ export class StarknetIndexer { const result = await this.dbHandler.getIndexerState(this.config.cursorKey); if (!result) { + this.hasExistingState = false; let startingBlock: number; if (this.config.startingBlockNumber === 'latest') { if (!this.provider) throw new Error('Provider not initialized'); @@ -280,6 +282,7 @@ export class StarknetIndexer { await this.dbHandler.initializeIndexerState(startingBlock, this.config.cursorKey); return startingBlock; } else { + this.hasExistingState = true; this.cursor = { blockNumber: result.last_block_number, blockHash: result.last_block_hash, @@ -377,10 +380,16 @@ export class StarknetIndexer { currentBlock = await this.provider.getBlockNumber(); } let targetBlock: number; - if (this.config.startingBlockNumber === 'latest') { - targetBlock = currentBlock; + if (this.hasExistingState && this.cursor) { + // Resume from the block after the last processed block + targetBlock = this.cursor.blockNumber; } else { - targetBlock = this.config.startingBlockNumber; + // Fresh start: honor configured starting block (or latest) + if (this.config.startingBlockNumber === 'latest') { + targetBlock = currentBlock; + } else { + targetBlock = this.config.startingBlockNumber; + } } try { diff --git a/src/utils/db/mysql-db-handler.ts b/src/utils/db/mysql-db-handler.ts index 92d3ccd..8690ea9 100644 --- a/src/utils/db/mysql-db-handler.ts +++ b/src/utils/db/mysql-db-handler.ts @@ -129,7 +129,7 @@ export class MysqlDbHandler extends BaseDbHandler { } return { - last_block_number: results[0].last_block_number, + last_block_number: Number(results[0].last_block_number), last_block_hash: results[0].last_block_hash, cursor_key: cursorKey, }; diff --git a/src/utils/db/postgres-db-handler.ts b/src/utils/db/postgres-db-handler.ts index 4ce8e27..e8e517e 100644 --- a/src/utils/db/postgres-db-handler.ts +++ b/src/utils/db/postgres-db-handler.ts @@ -100,7 +100,7 @@ export class PostgresDbHandler extends BaseDbHandler { } return { - last_block_number: result.rows[0].last_block_number, + last_block_number: Number(result.rows[0].last_block_number), last_block_hash: result.rows[0].last_block_hash, cursor_key: cursorKey, };