github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/internal/state/indexer/sink/kv/kv.go (about) 1 package kv 2 3 import ( 4 "context" 5 6 dbm "github.com/tendermint/tm-db" 7 8 abci "github.com/ari-anchor/sei-tendermint/abci/types" 9 "github.com/ari-anchor/sei-tendermint/internal/pubsub/query" 10 "github.com/ari-anchor/sei-tendermint/internal/state/indexer" 11 kvb "github.com/ari-anchor/sei-tendermint/internal/state/indexer/block/kv" 12 kvt "github.com/ari-anchor/sei-tendermint/internal/state/indexer/tx/kv" 13 "github.com/ari-anchor/sei-tendermint/types" 14 ) 15 16 var _ indexer.EventSink = (*EventSink)(nil) 17 18 // The EventSink is an aggregator for redirecting the call path of the tx/block kvIndexer. 19 // For the implementation details please see the kv.go in the indexer/block and indexer/tx folder. 20 type EventSink struct { 21 txi *kvt.TxIndex 22 bi *kvb.BlockerIndexer 23 store dbm.DB 24 } 25 26 func NewEventSink(store dbm.DB) indexer.EventSink { 27 return &EventSink{ 28 txi: kvt.NewTxIndex(store), 29 bi: kvb.New(store), 30 store: store, 31 } 32 } 33 34 func (kves *EventSink) Type() indexer.EventSinkType { 35 return indexer.KV 36 } 37 38 func (kves *EventSink) IndexBlockEvents(bh types.EventDataNewBlockHeader) error { 39 return kves.bi.Index(bh) 40 } 41 42 func (kves *EventSink) IndexTxEvents(results []*abci.TxResult) error { 43 return kves.txi.Index(results) 44 } 45 46 func (kves *EventSink) SearchBlockEvents(ctx context.Context, q *query.Query) ([]int64, error) { 47 return kves.bi.Search(ctx, q) 48 } 49 50 func (kves *EventSink) SearchTxEvents(ctx context.Context, q *query.Query) ([]*abci.TxResult, error) { 51 return kves.txi.Search(ctx, q) 52 } 53 54 func (kves *EventSink) GetTxByHash(hash []byte) (*abci.TxResult, error) { 55 return kves.txi.Get(hash) 56 } 57 58 func (kves *EventSink) HasBlock(h int64) (bool, error) { 59 return kves.bi.Has(h) 60 } 61 62 func (kves *EventSink) Stop() error { 63 return kves.store.Close() 64 }