Documentation ¶
Index ¶
- func IndexAllEvents() func(*TxIndex)
- func IndexEvents(compositeKeys []string) func(*TxIndex)
- type TxIndex
- func (txi *TxIndex) AddBatch(b *txindex.Batch) error
- func (txi *TxIndex) DeleteFromHeight(ctx context.Context, height int64) error
- func (txi *TxIndex) Get(hash []byte) (*types.TxResult, error)
- func (txi *TxIndex) Index(result *types.TxResult) error
- func (txi *TxIndex) Search(ctx context.Context, q *query.Query) ([]*types.TxResult, int, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IndexAllEvents ¶
func IndexAllEvents() func(*TxIndex)
IndexAllEvents is an option for indexing all events.
func IndexEvents ¶
IndexEvents is an option for setting which composite keys to index.
Types ¶
type TxIndex ¶
type TxIndex struct {
// contains filtered or unexported fields
}
TxIndex is the simplest possible indexer, backed by key-value storage (levelDB).
func NewTxIndex ¶
NewTxIndex creates new KV indexer.
func (*TxIndex) AddBatch ¶
AddBatch indexes a batch of transactions using the given list of events. Each key that indexed from the tx's events is a composite of the event type and the respective attribute's key delimited by a "." (eg. "account.number"). Any event with an empty type is not indexed.
func (*TxIndex) DeleteFromHeight ¶
func (*TxIndex) Get ¶
Get gets transaction from the TxIndex storage and returns it or nil if the transaction is not found.
func (*TxIndex) Index ¶
Index indexes a single transaction using the given list of events. Each key that indexed from the tx's events is a composite of the event type and the respective attribute's key delimited by a "." (eg. "account.number"). Any event with an empty type is not indexed.
func (*TxIndex) Search ¶
Search performs a search using the given query. It breaks the query into conditions (like "tx.height > 5"). For each condition, it queries the DB index. One special use cases here: (1) if "tx.hash" is found, it returns tx result for it (2) for range queries it is better for the client to provide both lower and upper bounds, so we are not performing a full scan. Results from querying indexes are then intersected and returned to the caller.