WithOwnerState iterates all certificates by owner in certain state
(ctx sdk.Context, id sdk.Address, state types.State, fn func(types.CertificateResponse) bool)
| 212 | |
| 213 | // WithOwnerState iterates all certificates by owner in certain state |
| 214 | func (k keeper) WithOwnerState(ctx sdk.Context, id sdk.Address, state types.State, fn func(types.CertificateResponse) bool) { |
| 215 | store := ctx.KVStore(k.skey) |
| 216 | |
| 217 | searchPrefix, err := filterToPrefix(types.CertificateFilter{ |
| 218 | Owner: id.String(), |
| 219 | State: state.String(), |
| 220 | }) |
| 221 | if err != nil { |
| 222 | panic(err) |
| 223 | } |
| 224 | |
| 225 | iter := storetypes.KVStorePrefixIterator(store, searchPrefix) |
| 226 | defer func() { |
| 227 | _ = iter.Close() |
| 228 | }() |
| 229 | |
| 230 | for ; iter.Valid(); iter.Next() { |
| 231 | _, item := k.mustUnmarshal(iter.Key(), iter.Value()) |
| 232 | if stop := fn(item); stop { |
| 233 | break |
| 234 | } |
| 235 | } |
| 236 | } |
| 237 | |
| 238 | func (k keeper) unmarshal(key, val []byte) (types.CertID, types.CertificateResponse, error) { |
| 239 | _, id, err := ParseCertKey(key) |
nothing calls this directly
no test coverage detected