package indexer import ( "context" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/pubsub/query" "github.com/tendermint/tendermint/types" ) type EventSinkType string const ( NULL EventSinkType = "null" KV EventSinkType = "kv" PSQL EventSinkType = "psql" ) // EventSink interface is defined the APIs for the IndexerService to interact with the data store, // including the block/transaction indexing and the search functions. // // The IndexerService will accept a list of one or more EventSink types. During the OnStart method // it will call the appropriate APIs on each EventSink to index both block and transaction events. type EventSink interface { // IndexBlockEvents indexes the blockheader. IndexBlockEvents(types.EventDataNewBlockHeader) error // IndexTxEvents indexes the given result of transactions. To call it with multi transactions, // must guarantee the index of given transactions are in order. IndexTxEvents([]*abci.TxResult) error // SearchBlockEvents provides the block search by given query conditions. This function only // supported by the kvEventSink. SearchBlockEvents(context.Context, *query.Query) ([]int64, error) // SearchTxEvents provides the transaction search by given query conditions. This function only // supported by the kvEventSink. SearchTxEvents(context.Context, *query.Query) ([]*abci.TxResult, error) // GetTxByHash provides the transaction search by given transaction hash. This function only // supported by the kvEventSink. GetTxByHash([]byte) (*abci.TxResult, error) // HasBlock provides the transaction search by given transaction hash. This function only // supported by the kvEventSink. HasBlock(int64) (bool, error) // Type checks the eventsink structure type. Type() EventSinkType // Stop will close the data store connection, if the eventsink supports it. Stop() error }