Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrorEmptyHash = errors.New("transaction hash cannot be empty")
ErrorEmptyHash indicates empty hash
Functions ¶
func IndexingEnabled ¶
IndexingEnabled returns the given eventSinks is supporting the indexing services.
func IsRangeOperation ¶
IsRangeOperation returns a boolean signifying if a query Operator is a range operation or not.
func KVSinkEnabled ¶
KVSinkEnabled returns the given eventSinks is containing KVEventSink.
Types ¶
type Batch ¶
Batch groups together multiple Index operations to be performed at the same time. NOTE: Batch is NOT thread-safe and must not be modified after starting its execution.
type BlockIndexer ¶
type BlockIndexer interface { // Has returns true if the given height has been indexed. An error is returned // upon database query failure. Has(height int64) (bool, error) // Index indexes BeginBlock and EndBlock events for a given block by its height. Index(types.EventDataNewBlockHeader) error // Search performs a query for block heights that match a given BeginBlock // and Endblock event search criteria. Search(ctx context.Context, q *query.Query) ([]int64, error) }
BlockIndexer defines an interface contract for indexing block events.
type EventSink ¶
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 }
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 EventSinkType ¶
type EventSinkType string
const ( NULL EventSinkType = "null" KV EventSinkType = "kv" PSQL EventSinkType = "psql" )
type QueryRange ¶
type QueryRange struct { LowerBound interface{} // int || time.Time UpperBound interface{} // int || time.Time Key string IncludeLowerBound bool IncludeUpperBound bool }
QueryRange defines a range within a query condition.
func (QueryRange) AnyBound ¶
func (qr QueryRange) AnyBound() interface{}
AnyBound returns either the lower bound if non-nil, otherwise the upper bound.
func (QueryRange) LowerBoundValue ¶
func (qr QueryRange) LowerBoundValue() interface{}
LowerBoundValue returns the value for the lower bound. If the lower bound is nil, nil will be returned.
func (QueryRange) UpperBoundValue ¶
func (qr QueryRange) UpperBoundValue() interface{}
UpperBoundValue returns the value for the upper bound. If the upper bound is nil, nil will be returned.
type QueryRanges ¶
type QueryRanges map[string]QueryRange
QueryRanges defines a mapping between a composite event key and a QueryRange.
e.g.account.number => queryRange{lowerBound: 1, upperBound: 5}
func LookForRanges ¶
func LookForRanges(conditions []query.Condition) (ranges QueryRanges, indexes []int)
LookForRanges returns a mapping of QueryRanges and the matching indexes in the provided query conditions.
type Service ¶
type Service struct { service.BaseService // contains filtered or unexported fields }
Service connects event bus, transaction and block indexers together in order to index transactions and blocks coming from the event bus.
func NewIndexerService ¶
NewIndexerService returns a new service instance.
type TxIndexer ¶
type TxIndexer interface { // Index analyzes, indexes and stores transactions. For indexing multiple // Transacions must guarantee the Index of the TxResult is in order. // See Batch struct. Index(results []*abci.TxResult) error // Get returns the transaction specified by hash or nil if the transaction is not indexed // or stored. Get(hash []byte) (*abci.TxResult, error) // Search allows you to query for transactions. Search(ctx context.Context, q *query.Query) ([]*abci.TxResult, error) }
TxIndexer interface defines methods to index and search transactions.