Skip to main content

PersistentMap

This class is one of several convenience collections built on top of the Storage class It implements a map -- a persistent unordered map.

To create a map

let map = new PersistentMap<string, string>("m")  // choose a unique prefix per account

To use the map

map.set(key, value)
map.get(key)

IMPORTANT NOTES:

(1) The Map doesn't store keys, so if you need to retrieve them, include keys in the values.

(2) Since all data stored on the blockchain is kept in a single key-value store under the contract account, you must always use a unique storage prefix for different collections to avoid data collision.

Type parameters​

NameDescription
KThe generic type parameter K can be any valid AssemblyScript type.
VThe generic type parameter V can be any valid AssemblyScript type. MISC: Original code from Near (https://github.com/near/near-sdk-as/blob/master/sdk-core/assembly/collections/persistentMap.ts)

Hierarchy​

Table of contents​

Constructors​

Properties​

Methods​

Constructors​

constructor​

• new PersistentMap<K, V>(prefix): PersistentMap<K, V>

Creates or restores a persistent map with a given storage prefix. Always use a unique storage prefix for different collections.

Example

let map = new PersistentMap<string, string>("m") // note the prefix must be unique (per MASSA account)

Type parameters​

Name
K
V

Parameters​

NameTypeDescription
prefixstringA prefix to use for every key of this map.

Returns​

PersistentMap<K, V>

Defined in​

assembly/libraries/PersistentMap.ts:65

Properties​

_elementPrefix​

• Private _elementPrefix: string

Defined in​

assembly/libraries/PersistentMap.ts:51


_size​

• Private _size: usize

Defined in​

assembly/libraries/PersistentMap.ts:52

Methods​

_decreaseSize​

▸ _decreaseSize(): void

Decreases the internal map size counter

Returns​

void

Defined in​

assembly/libraries/PersistentMap.ts:145


_increaseSize​

▸ _increaseSize(key): void

Increases the internal map size counter

Parameters​

NameTypeDescription
keyKKey to remove.

Returns​

void

Defined in​

assembly/libraries/PersistentMap.ts:136


_key​

▸ _key(key): StaticArray<u8>

Parameters​

NameTypeDescription
keyKSearch key.

Returns​

StaticArray<u8>

An internal string key for a given key of type K.

Defined in​

assembly/libraries/PersistentMap.ts:74


contains​

▸ contains(key, address?): bool

Checks whether the map contains a given key

let map = new PersistentMap<string, string>("m")

map.contains("hello") // false
map.set("hello", "world")
map.contains("hello") // true

Parameters​

NameTypeDescription
keyKKey to check.
addressAddressAddress containing the PersistentMap.

Returns​

bool

True if the given key present in the map.

Defined in​

assembly/libraries/PersistentMap.ts:95


delete​

▸ delete(key): void

Removes the given key and related value from the map

let map = new PersistentMap<string, string>("m")

map.set("hello", "world")
map.delete("hello")

Removes value and the key from the map.

Parameters​

NameTypeDescription
keyKKey to remove.

Returns​

void

Defined in​

assembly/libraries/PersistentMap.ts:127


get​

▸ get(key, defaultValue, address?): V

Retrieves the related value for a given key, or uses the defaultValue if not key is found

let map = new PersistentMap<string, string>("m")

map.set("hello", "world")
let found = map.get("hello")
let notFound = map.get("goodbye", "cruel world")

assert(found == "world")
assert(notFound == "cruel world")

Parameters​

NameTypeDescription
keyKKey of the element.
defaultValueVThe default value if the key is not present.
addressAddress-

Returns​

V

Value for the given key or the default value.

Defined in​

assembly/libraries/PersistentMap.ts:169


getOf​

▸ getOf(address, key, defaultValue): V

Retrieves the related value for a given key for a given smart contract, or uses the defaultValue if not key is found

let map = new PersistentMap<string, string>("m")

map.set("hello", "world")
let found = map.get("hello")
let notFound = map.get("goodbye", "cruel world")

assert(found == "world")
assert(notFound == "cruel world")

Parameters​

NameTypeDescription
addressAddressAddress containing the PersistentMap.
keyKKey of the element.
defaultValueVThe default value if the key is not present.

Returns​

V

Value for the given key or the default value.

Defined in​

assembly/libraries/PersistentMap.ts:235


getSome​

▸ getSome(key, msg?): V

Retrieves a related value for a given key or fails assertion with "key not found"

let map = new PersistentMap<string, string>("m")

map.set("hello", "world")
let result = map.getSome("hello")
// map.getSome("goodbye") // will throw with failed assertion

assert(result == "world")

Parameters​

NameTypeDefault valueDescription
keyKundefinedKey of the element.
msgstring'key not found'-

Returns​

V

Value for the given key or the default value.

Defined in​

assembly/libraries/PersistentMap.ts:256


set​

▸ set(key, value): void

let map = new PersistentMap<string, string>("m")

map.set("hello", "world")

Sets the new value for the given key.

Parameters​

NameTypeDescription
keyKKey of the element.
valueVThe new value of the element.

Returns​

void

Defined in​

assembly/libraries/PersistentMap.ts:299


size​

▸ size(): usize

Returns the map size

Returns​

usize

the map size

Example

let map = new PersistentMap<string, string> ("m")

map.size()

Defined in​

assembly/libraries/PersistentMap.ts:110