github.com/diadata-org/diadata@v1.4.593/pkg/dia/helpers/substrate-helper/gsrpc/registry/state/event_provider.go (about) 1 package state 2 3 import ( 4 libErr "github.com/diadata-org/diadata/pkg/dia/helpers/substrate-helper/gsrpc/error" 5 "github.com/diadata-org/diadata/pkg/dia/helpers/substrate-helper/gsrpc/rpc/state" 6 "github.com/diadata-org/diadata/pkg/dia/helpers/substrate-helper/gsrpc/types" 7 ) 8 9 const ( 10 ErrEventStorageKeyCreation = libErr.Error("event storage key creation") 11 ErrEventStorageRetrieval = libErr.Error("event storage retrieval") 12 ) 13 14 //go:generate mockery --name EventProvider --structname EventProviderMock --filename event_provider_mock.go --inpackage 15 16 // EventProvider is the interface used for retrieving event data from the storage. 17 type EventProvider interface { 18 GetStorageEvents(meta *types.Metadata, blockHash types.Hash) (*types.StorageDataRaw, error) 19 } 20 21 // eventProvider implements the EventProvider interface. 22 type eventProvider struct { 23 stateRPC state.State 24 } 25 26 // NewEventProvider creates a new EventProvider. 27 func NewEventProvider(stateRPC state.State) EventProvider { 28 return &eventProvider{stateRPC: stateRPC} 29 } 30 31 const ( 32 storagePrefix = "System" 33 storageMethod = "Events" 34 ) 35 36 // GetStorageEvents returns the event storage data found at the provided blockHash. 37 func (p *eventProvider) GetStorageEvents(meta *types.Metadata, blockHash types.Hash) (*types.StorageDataRaw, error) { 38 key, err := types.CreateStorageKey(meta, storagePrefix, storageMethod, nil) 39 40 if err != nil { 41 return nil, ErrEventStorageKeyCreation.Wrap(err) 42 } 43 44 storageData, err := p.stateRPC.GetStorageRaw(key, blockHash) 45 46 if err != nil { 47 return nil, ErrEventStorageRetrieval.Wrap(err) 48 } 49 50 return storageData, nil 51 }