Documentation ¶
Index ¶
- Constants
- Variables
- func KeyRefsDiff(prevKeys []state.KeyValue, newKeys []state.KeyValue) (deleted, inserted []state.KeyValue, err error)
- func MapEvents(eventMappings EventMappings) router.MiddlewareFunc
- func MapStates(stateMappings StateMappings) router.MiddlewareFunc
- func NewKeyRef(target interface{}, idx string, refKey, pKey state.Key) *schema.KeyRef
- func NewKeyRefID(target interface{}, idx string, refKey state.Key) *schema.KeyRefId
- func SchemaNamespace(schema interface{}) state.Key
- type EventImpl
- type EventMapped
- type EventMapper
- type EventMappers
- type EventMapping
- type EventMappingOpt
- type EventMappings
- type Impl
- func (s *Impl) Delete(entry interface{}) error
- func (s *Impl) DeletePrivate(collection string, entry interface{}) (err error)
- func (s *Impl) Exists(entry interface{}) (bool, error)
- func (s *Impl) ExistsPrivate(collection string, entry interface{}) (exists bool, err error)
- func (s *Impl) Get(entry interface{}, target ...interface{}) (interface{}, error)
- func (s *Impl) GetByKey(entry interface{}, idx string, idxVal []string, target ...interface{}) (result interface{}, err error)
- func (s *Impl) GetByUniqKey(entry interface{}, idx string, idxVal []string, target ...interface{}) (result interface{}, err error)
- func (s *Impl) GetHistory(entry interface{}, target interface{}) (state.HistoryEntryList, error)
- func (s *Impl) GetPrivate(collection string, entry interface{}, target ...interface{}) (result interface{}, err error)
- func (s *Impl) Insert(entry interface{}, value ...interface{}) error
- func (s *Impl) InsertPrivate(collection string, entry interface{}, value ...interface{}) (err error)
- func (s *Impl) List(entry interface{}, target ...interface{}) (interface{}, error)
- func (s *Impl) ListPrivate(collection string, usePrivateDataIterator bool, namespace interface{}, ...) (result interface{}, err error)
- func (s *Impl) ListWith(entry interface{}, key state.Key) (result interface{}, err error)
- func (s *Impl) Logger() *zap.Logger
- func (s *Impl) MappingNamespace(schema interface{}) (state.Key, error)
- func (s *Impl) Put(entry interface{}, value ...interface{}) error
- func (s *Impl) PutPrivate(collection string, entry interface{}, value ...interface{}) (err error)
- func (s *Impl) UseKeyTransformer(kt state.KeyTransformer) state.State
- type InstanceKeyer
- type InstanceMultiKeyer
- type MappedState
- type Namer
- type ProtoEventMapped
- type ProtoStateMapped
- type StateIndex
- type StateIndexDef
- type StateMapped
- type StateMapper
- type StateMappers
- type StateMapping
- func (sm *StateMapping) AddIndex(idx *StateIndex) error
- func (sm *StateMapping) Index(name string) *StateIndex
- func (sm *StateMapping) Indexes() []*StateIndex
- func (sm *StateMapping) KeyerFor() interface{}
- func (sm *StateMapping) Keys(entity interface{}) ([]state.KeyValue, error)
- func (sm *StateMapping) List() interface{}
- func (sm *StateMapping) Namespace() state.Key
- func (sm *StateMapping) PrimaryKey(entity interface{}) (state.Key, error)
- func (sm *StateMapping) Schema() interface{}
- type StateMappingOpt
- func KeyerFor(schema interface{}) StateMappingOpt
- func List(list proto.Message) StateMappingOpt
- func PKeyAttr(attrs ...string) StateMappingOpt
- func PKeyComplexId(pkeySchema interface{}) StateMappingOpt
- func PKeyConst(key state.Key) StateMappingOpt
- func PKeyId() StateMappingOpt
- func PKeySchema(pkeySchema interface{}) StateMappingOpt
- func PKeyer(pkeyer InstanceKeyer) StateMappingOpt
- func StateNamespace(namespace state.Key) StateMappingOpt
- func UniqKey(name string, fields ...[]string) StateMappingOpt
- func WithIndex(idx *StateIndexDef) StateMappingOpt
- type StateMappings
- func (smm StateMappings) Add(schema interface{}, opts ...StateMappingOpt) StateMappings
- func (smm StateMappings) Exists(entry interface{}) bool
- func (smm StateMappings) Get(entry interface{}) (StateMapper, error)
- func (smm StateMappings) GetByNamespace(namespace state.Key) (StateMapper, error)
- func (smm *StateMappings) IdxKey(entity interface{}, idx string, idxVal state.Key) (state.Key, error)
- func (smm StateMappings) Map(entry interface{}) (mapped StateMapped, err error)
- func (smm StateMappings) PrimaryKey(entry interface{}) (pkey state.Key, err error)
Constants ¶
const KeyRefNamespace = `_idx`
KeyRefNamespace namespace for uniq indexes
const (
TimestampKeyLayout = `2006-01-02`
)
Variables ¶
var ( // ErrEntryTypeNotSupported entry type has no appropriate mapper type ErrEntryTypeNotSupported = errors.New(`entry type not supported for mapping`) // ErrStateMappingNotFound occurs when mapping for state entry is not defined ErrStateMappingNotFound = errors.New(`state mapping not found`) // ErrEventMappingNotFound occurs when mapping for event is not defined ErrEventMappingNotFound = errors.New(`event mapping not found`) // ErrFieldTypeNotSupportedForKeyExtraction key cannot extracted from field ErrFieldTypeNotSupportedForKeyExtraction = errors.New(`field type not supported for key extraction`) ErrMappingUniqKeyExists = errors.New(`mapping uniq key exists`) ErrFieldNotExists = errors.New(`field is not exists`) ErrPrimaryKeyerNotDefined = errors.New(`primary keyer is not defined`) // ErrIndexAlreadyExists occurs when when trying to add index to mapping with existent name ErrIndexAlreadyExists = errors.New(`index already exists`) // ErrIndexReferenceNotFound occurs when trying to find entry by index ErrIndexReferenceNotFound = errors.New(`index reference not found`) )
var KeyRefIDKeyer = attrsKeyer([]string{`Schema`, `Idx`, `RefKey`})
KeyRefIDKeyer keyer for KeyRef entity
var KeyRefIDMapper = &StateMapping{ schema: &schema.KeyRefId{}, namespace: state.Key{KeyRefNamespace}, primaryKeyer: KeyRefIDKeyer, }
var KeyRefMapper = &StateMapping{ schema: &schema.KeyRef{}, namespace: state.Key{KeyRefNamespace}, primaryKeyer: KeyRefIDKeyer, }
Functions ¶
func KeyRefsDiff ¶ added in v0.6.8
func KeyRefsDiff(prevKeys []state.KeyValue, newKeys []state.KeyValue) (deleted, inserted []state.KeyValue, err error)
KeyRefsDiff calculates diff between key reference set
func MapEvents ¶
func MapEvents(eventMappings EventMappings) router.MiddlewareFunc
func MapStates ¶
func MapStates(stateMappings StateMappings) router.MiddlewareFunc
func NewKeyRefID ¶ added in v0.4.5
func SchemaNamespace ¶ added in v0.5.4
Types ¶
type EventImpl ¶
type EventImpl struct {
// contains filtered or unexported fields
}
func NewEvent ¶
func NewEvent(stub shim.ChaincodeStubInterface, mappings EventMappings) *EventImpl
func WrapEvent ¶ added in v0.5.3
func WrapEvent(event state.Event, mappings EventMappings) *EventImpl
func (*EventImpl) UseNameTransformer ¶
func (e *EventImpl) UseNameTransformer(nt state.StringTransformer) state.Event
func (*EventImpl) UseSetTransformer ¶
func (e *EventImpl) UseSetTransformer(tb state.ToBytesTransformer) state.Event
type EventMapped ¶ added in v0.4.3
type EventMapper ¶
type EventMappers ¶
type EventMapping ¶
type EventMapping struct {
// contains filtered or unexported fields
}
func (EventMapping) Name ¶
func (em EventMapping) Name(instance interface{}) (string, error)
func (EventMapping) Schema ¶
func (em EventMapping) Schema() interface{}
type EventMappingOpt ¶
type EventMappingOpt func(*EventMapping)
type EventMappings ¶
type EventMappings map[string]*EventMapping
func (EventMappings) Add ¶
func (emm EventMappings) Add(schema interface{}, opts ...EventMappingOpt) EventMappings
func (EventMappings) Exists ¶
func (emm EventMappings) Exists(entry interface{}) bool
func (EventMappings) Get ¶
func (emm EventMappings) Get(entry interface{}) (EventMapper, error)
func (EventMappings) Map ¶
func (emm EventMappings) Map(entry interface{}) (mapped EventMapped, err error)
type Impl ¶ added in v0.4.5
func (*Impl) DeletePrivate ¶ added in v0.5.0
func (*Impl) ExistsPrivate ¶ added in v0.5.0
func (*Impl) GetByUniqKey ¶ added in v0.4.5
func (*Impl) GetHistory ¶ added in v0.4.5
func (s *Impl) GetHistory(entry interface{}, target interface{}) (state.HistoryEntryList, error)
func (*Impl) GetPrivate ¶ added in v0.5.0
func (*Impl) InsertPrivate ¶ added in v0.5.0
func (*Impl) ListPrivate ¶ added in v0.5.0
func (*Impl) MappingNamespace ¶ added in v0.4.5
func (*Impl) PutPrivate ¶ added in v0.5.0
func (*Impl) UseKeyTransformer ¶ added in v0.4.5
func (s *Impl) UseKeyTransformer(kt state.KeyTransformer) state.State
type InstanceKeyer ¶
InstanceKeyer returns key of an state entry instance
type InstanceMultiKeyer ¶ added in v0.6.8
type MappedState ¶
type MappedState interface { state.State // ListWith allows to refine search criteria by adding to namespace key parts ListWith(schema interface{}, key state.Key) (result interface{}, err error) // GetByUniqKey return one entry // Deprecated: use GetByKey GetByUniqKey(schema interface{}, idx string, idxVal []string, target ...interface{}) (result interface{}, err error) // GetByKey GetByKey(schema interface{}, idx string, idxVal []string, target ...interface{}) (result interface{}, err error) }
type ProtoEventMapped ¶ added in v0.4.3
type ProtoEventMapped struct {
// contains filtered or unexported fields
}
func NewProtoEventMapped ¶ added in v0.4.3
func NewProtoEventMapped(instance interface{}, eventMapper EventMapper) (*ProtoEventMapped, error)
func (*ProtoEventMapped) Name ¶ added in v0.4.3
func (em *ProtoEventMapped) Name() (string, error)
func (*ProtoEventMapped) ToBytes ¶ added in v0.4.3
func (em *ProtoEventMapped) ToBytes() ([]byte, error)
type ProtoStateMapped ¶ added in v0.4.3
type ProtoStateMapped struct {
// contains filtered or unexported fields
}
func NewKeyRefIDMapped ¶ added in v0.4.5
func NewKeyRefIDMapped(target interface{}, idx string, refKey state.Key) *ProtoStateMapped
func NewKeyRefMapped ¶ added in v0.4.3
func NewKeyRefMapped(target interface{}, idx string, refKey, pKey state.Key) *ProtoStateMapped
func NewProtoStateMapped ¶ added in v0.4.3
func NewProtoStateMapped(instance interface{}, stateMapper StateMapper) *ProtoStateMapped
func (*ProtoStateMapped) Keys ¶ added in v0.4.3
func (pm *ProtoStateMapped) Keys() ([]state.KeyValue, error)
func (*ProtoStateMapped) Mapper ¶ added in v0.4.3
func (pm *ProtoStateMapped) Mapper() StateMapper
func (*ProtoStateMapped) ToBytes ¶ added in v0.4.3
func (pm *ProtoStateMapped) ToBytes() ([]byte, error)
type StateIndex ¶ added in v0.6.8
type StateIndex struct { Name string Uniq bool Required bool Keyer InstanceMultiKeyer // index can have multiple keys }
StateIndex additional index of entity instance
type StateIndexDef ¶ added in v0.6.8
type StateIndexDef struct { Name string Fields []string Required bool Multi bool Keyer InstanceMultiKeyer }
StateIndexDef additional index definition
type StateMapped ¶ added in v0.4.3
type StateMapper ¶
type StateMapper interface { Schema() interface{} List() interface{} Namespace() state.Key // PrimaryKey returns primary key for entry PrimaryKey(instance interface{}) (key state.Key, err error) // Keys returns additional keys for Keys(instance interface{}) (key []state.KeyValue, err error) //KeyerFor returns target entity if mapper is key mapper KeyerFor() (schema interface{}) Indexes() []*StateIndex }
StateMapper
type StateMappers ¶
type StateMappers interface { Exists(schema interface{}) (exists bool) Map(schema interface{}) (keyValue state.KeyValue, err error) Get(schema interface{}) (stateMapper StateMapper, err error) PrimaryKey(schema interface{}) (key state.Key, err error) }
StateMappers interface for mappers collection
type StateMapping ¶
type StateMapping struct {
// contains filtered or unexported fields
}
StateMapping defines metadata for mapping from schema to state keys/values
func (*StateMapping) AddIndex ¶ added in v0.6.8
func (sm *StateMapping) AddIndex(idx *StateIndex) error
func (*StateMapping) Index ¶ added in v0.6.8
func (sm *StateMapping) Index(name string) *StateIndex
func (*StateMapping) Indexes ¶ added in v0.6.8
func (sm *StateMapping) Indexes() []*StateIndex
func (*StateMapping) KeyerFor ¶ added in v0.6.3
func (sm *StateMapping) KeyerFor() interface{}
func (*StateMapping) Keys ¶ added in v0.4.3
func (sm *StateMapping) Keys(entity interface{}) ([]state.KeyValue, error)
Indexes prepares primary and additional uniq/non-uniq keys for storage
func (*StateMapping) List ¶ added in v0.4.2
func (sm *StateMapping) List() interface{}
func (*StateMapping) Namespace ¶
func (sm *StateMapping) Namespace() state.Key
func (*StateMapping) PrimaryKey ¶
func (sm *StateMapping) PrimaryKey(entity interface{}) (state.Key, error)
func (*StateMapping) Schema ¶
func (sm *StateMapping) Schema() interface{}
type StateMappingOpt ¶
type StateMappingOpt func(*StateMapping, StateMappings)
func KeyerFor ¶ added in v0.6.3
func KeyerFor(schema interface{}) StateMappingOpt
func List ¶ added in v0.4.2
func List(list proto.Message) StateMappingOpt
List defined list container, it must have `Items` attr
func PKeyAttr ¶
func PKeyAttr(attrs ...string) StateMappingOpt
func PKeyComplexId ¶ added in v0.4.2
func PKeyComplexId(pkeySchema interface{}) StateMappingOpt
PKeyComplexId sets Id as key field, also adds mapping for pkeySchema with namespace from mapping schema
func PKeyConst ¶ added in v0.5.5
func PKeyConst(key state.Key) StateMappingOpt
PKeyConst use constant as state entry key
func PKeySchema ¶
func PKeySchema(pkeySchema interface{}) StateMappingOpt
PKeySchema registers all fields from pkeySchema as part of primary key also register keyer for pkeySchema with with namespace from current schema
func PKeyer ¶
func PKeyer(pkeyer InstanceKeyer) StateMappingOpt
func StateNamespace ¶
func StateNamespace(namespace state.Key) StateMappingOpt
StateNamespace sets namespace for mapping
func UniqKey ¶ added in v0.4.3
func UniqKey(name string, fields ...[]string) StateMappingOpt
UniqKey defined uniq key in entity
func WithIndex ¶ added in v0.6.8
func WithIndex(idx *StateIndexDef) StateMappingOpt
type StateMappings ¶
type StateMappings map[string]*StateMapping
func (StateMappings) Add ¶
func (smm StateMappings) Add(schema interface{}, opts ...StateMappingOpt) StateMappings
func (StateMappings) Exists ¶
func (smm StateMappings) Exists(entry interface{}) bool
func (StateMappings) Get ¶
func (smm StateMappings) Get(entry interface{}) (StateMapper, error)
Get mapper for mapped entry
func (StateMappings) GetByNamespace ¶ added in v0.4.5
func (smm StateMappings) GetByNamespace(namespace state.Key) (StateMapper, error)
Get mapper by string namespace. It can be used in block explorer: we know state key, but don't know type actually mapped to state
func (StateMappings) Map ¶
func (smm StateMappings) Map(entry interface{}) (mapped StateMapped, err error)
func (StateMappings) PrimaryKey ¶ added in v0.4.3
func (smm StateMappings) PrimaryKey(entry interface{}) (pkey state.Key, err error)