in progress
This commit is contained in:
parent
1b72a6c40d
commit
e00d03aabd
|
@ -27,6 +27,10 @@ type ListMapper interface {
|
||||||
|
|
||||||
Push(sdk.Context, interface{})
|
Push(sdk.Context, interface{})
|
||||||
|
|
||||||
|
// Getter/Setter for meta information - can be customized
|
||||||
|
GetMeta(sdk.Context, interface{}) error
|
||||||
|
SetMeta(sdk.Context, interface{})
|
||||||
|
|
||||||
// Iterate*() is used to iterate over all existing elements in the list
|
// Iterate*() is used to iterate over all existing elements in the list
|
||||||
// Return true in the continuation to break
|
// Return true in the continuation to break
|
||||||
|
|
||||||
|
@ -97,6 +101,21 @@ func (lm listMapper) Push(ctx sdk.Context, value interface{}) {
|
||||||
store.Set(lm.LengthKey(), marshalUint64(lm.cdc, length+1))
|
store.Set(lm.LengthKey(), marshalUint64(lm.cdc, length+1))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (lm listMapper) GetMeta(ctx sdk.Context, ptr interface{}) error {
|
||||||
|
store := ctx.KVStore(lm.key)
|
||||||
|
bz := store.Get(lm.MetaKey())
|
||||||
|
return lm.cdc.UnmarshalBinary(bz, ptr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (lm listMapper) SetMeta(ctx sdk.Context, value interface{}) {
|
||||||
|
store := ctx.KVStore(lm.key)
|
||||||
|
bz, err := lm.cdc.MarshalBinary(value)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
store.Set(lm.MetaKey(), bz)
|
||||||
|
}
|
||||||
|
|
||||||
func (lm listMapper) IterateRead(ctx sdk.Context, ptr interface{}, fn func(sdk.Context, uint64) bool) {
|
func (lm listMapper) IterateRead(ctx sdk.Context, ptr interface{}, fn func(sdk.Context, uint64) bool) {
|
||||||
store := ctx.KVStore(lm.key)
|
store := ctx.KVStore(lm.key)
|
||||||
start, end := subspace([]byte(fmt.Sprintf("%s/elem/", lm.prefix)))
|
start, end := subspace([]byte(fmt.Sprintf("%s/elem/", lm.prefix)))
|
||||||
|
@ -140,6 +159,8 @@ func (lm listMapper) ElemKey(i uint64) []byte {
|
||||||
return []byte(fmt.Sprintf("%s/elem/%020d", lm.prefix, i))
|
return []byte(fmt.Sprintf("%s/elem/%020d", lm.prefix, i))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (lm listMapper)
|
||||||
|
|
||||||
// QueueMapper is a Mapper interface that provides queue-like functions
|
// QueueMapper is a Mapper interface that provides queue-like functions
|
||||||
// It panics when the element type cannot be (un/)marshalled by the codec
|
// It panics when the element type cannot be (un/)marshalled by the codec
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue