Skip to main content

SubstateDatabaseExtensions

Trait SubstateDatabaseExtensions 

Source
pub trait SubstateDatabaseExtensions: SubstateDatabase {
Show 14 methods // Provided methods fn get_raw_substate<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> Option<Vec<u8>> { ... } fn get_substate<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> Option<V> { ... } fn get_existing_substate<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> V { ... } fn list_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (DbSortKey, Vec<u8>)> + '_> { ... } fn list_kinded_raw_values<'a, K: SubstateKeyContent>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, Vec<u8>)> + '_> { ... } fn list_kinded_values<'a, K: SubstateKeyContent, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_> { ... } fn list_field_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (FieldKey, Vec<u8>)> + '_> { ... } fn list_field_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (FieldKey, V)> + '_> { ... } fn list_field_entries<'a, K: TryFrom<FieldKey>, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_> { ... } fn list_map_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (MapKey, Vec<u8>)> + '_> { ... } fn list_map_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (MapKey, V)> + '_> { ... } fn list_map_entries<'a, K: ScryptoDecode, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_> { ... } fn list_sorted_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (SortedKey, Vec<u8>)> + '_> { ... } fn list_sorted_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (SortedKey, V)> + '_> { ... }
}
Expand description

These are a separate trait so that SubstateDatabase stays object-safe, and can be used as dyn SubstateDatabase.

Generic parameters aren’t permitted on object-safe traits.

Provided Methods§

Source

fn get_raw_substate<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> Option<Vec<u8>>

Gets the raw bytes of the substate’s value, if it exists.

§Example
let is_bootstrapped = db.get_raw_substate(
    PACKAGE_PACKAGE,
    TYPE_INFO_FIELD_PARTITION,
    TypeInfoField::TypeInfo,
).is_some();
Source

fn get_substate<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> Option<V>

Gets the substate’s value, if it exists, and returns it decoded as Some(V). If it doesn’t exist, None is returned.

§Panics

This method panics if:

  • There is an error decoding the value into the V.
§Example use:
let type_info_substate = db.get_substate::<TypeInfoSubstate>(
    PACKAGE_PACKAGE,
    TYPE_INFO_FIELD_PARTITION,
    TypeInfoField::TypeInfo,
)?;
Source

fn get_existing_substate<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, substate_key: impl ResolvableSubstateKey<'a>, ) -> V

Gets the value of a subsate which is expected to exist, returns it decoded as V.

§Panics

This method panics if:

  • The substate doesn’t exist in the database.
  • There is an error decoding the value into the V.
§Example use:
let existing_type_info_substate: TypeInfoSubstate = db.get_existing_substate(
    PACKAGE_PACKAGE,
    TYPE_INFO_FIELD_PARTITION,
    TypeInfoField::TypeInfo,
)?;
Source

fn list_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (DbSortKey, Vec<u8>)> + '_>

Returns an iterator of the substates of a partition from an inclusive start cursor.

The iterator returns raw keys and values.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

Source

fn list_kinded_raw_values<'a, K: SubstateKeyContent>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, Vec<u8>)> + '_>

Returns an iterator of the substates of a partition from an inclusive start cursor.

The iterator returns K and the raw value for each substate. The caller must specify K as FieldKey, MapKey or SortedKey.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

Source

fn list_kinded_values<'a, K: SubstateKeyContent, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_>

Returns an iterator of the substates of a partition from an inclusive start cursor.

The iterator returns K and V for each substate. The caller must specify K as FieldKey, MapKey or SortedKey. The value type V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error decoding the value bytes into V.
Source

fn list_field_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (FieldKey, Vec<u8>)> + '_>

Returns an iterator of the substates of a field partition from an inclusive start cursor.

The iterator returns the FieldKey = u8 and the raw value for each substate.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

Source

fn list_field_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (FieldKey, V)> + '_>

Returns an iterator of the substates of a field partition from an inclusive start cursor.

The iterator returns the FieldKey = u8 and the decoded value V for each substate. The value type V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error decoding the value bytes into V.
Source

fn list_field_entries<'a, K: TryFrom<FieldKey>, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_>

Returns an iterator of the substates of a field partition from an inclusive start cursor.

The iterator returns the decoded key type K and the decoded value V for each substate. The key type K and value types V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error converting the field key byte into K.
  • There is an error decoding the value bytes into V.
Source

fn list_map_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (MapKey, Vec<u8>)> + '_>

Returns an iterator of the substates of a map partition from an inclusive start cursor.

The iterator returns the MapKey = Vec<u8> and the raw value for each substate.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

Source

fn list_map_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (MapKey, V)> + '_>

Returns an iterator of the substates of a map partition from an inclusive start cursor.

The iterator returns the MapKey = Vec<u8> and the decoded value V for each substate. The value type V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error decoding the value bytes into V.
Source

fn list_map_entries<'a, K: ScryptoDecode, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (K, V)> + '_>

Returns an iterator of the substates of a map partition from an inclusive start cursor.

The iterator returns the decoded key type K and the decoded value V for each substate. The key type K and value types V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error decoding the field bytes into K.
  • There is an error decoding the value bytes into V.
Source

fn list_sorted_raw_values<'a>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (SortedKey, Vec<u8>)> + '_>

Returns an iterator of the substates of a sorted partition from an inclusive start cursor.

The iterator returns the SortedKey = ([u8; 2], Vec<u8>) and the raw value for each substate.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

Source

fn list_sorted_values<'a, V: ScryptoDecode>( &self, node_id: impl AsRef<NodeId>, partition_number: PartitionNumber, from_substate_key_inclusive: impl ResolvableOptionalSubstateKey<'a>, ) -> Box<dyn Iterator<Item = (SortedKey, V)> + '_>

Returns an iterator of the substates of a sorted partition from an inclusive start cursor.

The iterator returns the SortedKey = ([u8; 2], Vec<u8>) and the decoded value V for each substate. The value type V can be specified or inferred.

Pass None::<SubstateKey> as the cursor to iterate from the start of the partition.

§Panics

This method panics if:

  • There is an error decoding the value bytes into V.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§