@@ -16,10 +16,10 @@ type EventIndexer struct {
1616 deployBlock * big.Int // Block number of contract deployment
1717 filterQuery ethereum.FilterQuery
1818 indexStep uint64 // index step
19- storage IEventStorage
19+ storage * EventInfoStorage
2020}
2121
22- func NewEventIndexer (client * ethclient.Client , deployedBlock * big.Int , filter ethereum.FilterQuery , indexStep uint64 , storage IEventStorage ) * EventIndexer {
22+ func NewEventIndexer (client * ethclient.Client , deployedBlock * big.Int , filter ethereum.FilterQuery , indexStep uint64 , storage * EventInfoStorage ) * EventIndexer {
2323 return & EventIndexer {
2424 client : client ,
2525 deployBlock : deployedBlock ,
@@ -32,8 +32,8 @@ func NewEventIndexer(client *ethclient.Client, deployedBlock *big.Int, filter et
3232func (l * EventIndexer ) Index () {
3333 log .Info ("event indexer started" )
3434
35- if l .storage .BlockProcessed () == 0 {
36- l .storage .SetBlockProcessed ( l .deployBlock .Uint64 () )
35+ if l .storage .BlockProcessed == 0 {
36+ l .storage .BlockProcessed = l .deployBlock .Uint64 ()
3737 err := l .storage .Store ()
3838 if err != nil {
3939 log .Error ("failed to store initial block number" , "error" , err )
@@ -45,40 +45,43 @@ func (l *EventIndexer) Index() {
4545 defer ticker .Stop ()
4646
4747 for range ticker .C {
48+
4849 // Get the current block number
4950 currentBlock , err := l .client .BlockNumber (context .Background ())
5051 if err != nil {
5152 log .Error ("failed to get current block number" , "error" , err )
5253 continue
5354 }
5455
55- if currentBlock <= l .storage .BlockProcessed () {
56- log .Info ("no new block to index" , "current_block" , currentBlock , "last_processed_block" , l .storage .BlockProcessed () )
56+ if currentBlock <= l .storage .BlockProcessed {
57+ log .Info ("no new block to index" , "current_block" , currentBlock , "last_processed_block" , l .storage .BlockProcessed )
5758 continue
5859 }
5960
6061 // Perform indexing operation
61- indexedEventInfo , err := l .index (l .client , big .NewInt (int64 (l .storage .BlockProcessed () )), big .NewInt (int64 (currentBlock )))
62+ indexedEventInfo , err := l .index (l .client , big .NewInt (int64 (l .storage .BlockProcessed )), big .NewInt (int64 (currentBlock )))
6263 if err != nil {
6364 log .Error ("indexing operation failed" , "error" , err )
6465 continue
6566 }
6667
6768 if indexedEventInfo != nil {
68- l .storage .SetBlockProcessed ( indexedEventInfo . BlockProcessed )
69+ l .storage .EventInfo = * indexedEventInfo
6970 } else {
70- l .storage .SetBlockProcessed (currentBlock )
71+ l .storage .EventInfo = EventInfo {
72+ BlockProcessed : currentBlock ,
73+ }
7174 }
72-
7375 // Update storage
7476 err = l .storage .Store ()
7577 if err != nil {
7678 log .Error ("event index complete, failed to update storage" , "error" , err )
7779 } else {
78- info := l .storage .EventInfo ()
79- log .Info ("event index complete, storage updated" , "processed_block" , info .BlockProcessed , "block_time" , info .BlockTime )
80+ log .Info ("event index complete, storage updated" , "processed_block" , l .storage .EventInfo .BlockProcessed , "block_time" , l .storage .EventInfo .BlockTime )
8081 }
82+
8183 }
84+
8285}
8386
8487// filter logs from from_block to to_block
@@ -140,6 +143,6 @@ func (ei *EventIndexer) index(client *ethclient.Client, fromBlock, toBlock *big.
140143func (l * EventIndexer ) GetFilter () ethereum.FilterQuery {
141144 return l .filterQuery
142145}
143- func (l * EventIndexer ) GetStorage () IEventStorage {
146+ func (l * EventIndexer ) GetStorage () * EventInfoStorage {
144147 return l .storage
145148}
0 commit comments