pub struct IndexStore {
pub caches: IndexStoreCaches,
/* private fields */
}Fields§
§caches: IndexStoreCachesImplementations§
Source§impl IndexStore
impl IndexStore
pub fn new_without_init( path: PathBuf, registry: &Registry, max_type_length: Option<u64>, remove_deprecated_tables: bool, ) -> Self
pub fn new( path: PathBuf, registry: &Registry, max_type_length: Option<u64>, remove_deprecated_tables: bool, ) -> Self
pub fn tables(&self) -> &IndexStoreTables
pub fn index_coin( &self, digest: &TransactionDigest, batch: &mut DBBatch, object_index_changes: &ObjectIndexChanges, tx_coins: Option<TxCoins>, ) -> SuiResult<IndexStoreCacheUpdates>
pub fn index_tx( &self, sender: SuiAddress, active_inputs: impl Iterator<Item = ObjectID>, mutated_objects: impl Iterator<Item = (ObjectRef, Owner)> + Clone, move_functions: impl Iterator<Item = (ObjectID, String, String)> + Clone, events: &TransactionEvents, object_index_changes: ObjectIndexChanges, digest: &TransactionDigest, timestamp_ms: u64, tx_coins: Option<TxCoins>, ) -> SuiResult<u64>
pub fn next_sequence_number(&self) -> TxSequenceNumber
pub fn get_transactions( &self, filter: Option<TransactionFilter>, cursor: Option<TransactionDigest>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transactions_by_input_object( &self, input_object: ObjectID, cursor: Option<TxSequenceNumber>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transactions_by_mutated_object( &self, mutated_object: ObjectID, cursor: Option<TxSequenceNumber>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transactions_from_addr( &self, addr: SuiAddress, cursor: Option<TxSequenceNumber>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transactions_by_move_function( &self, package: ObjectID, module: Option<String>, function: Option<String>, cursor: Option<TxSequenceNumber>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transactions_to_addr( &self, addr: SuiAddress, cursor: Option<TxSequenceNumber>, limit: Option<usize>, reverse: bool, ) -> SuiResult<Vec<TransactionDigest>>
pub fn get_transaction_seq( &self, digest: &TransactionDigest, ) -> SuiResult<Option<TxSequenceNumber>>
pub fn all_events( &self, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn events_by_transaction( &self, digest: &TransactionDigest, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn events_by_module_id( &self, module: &ModuleId, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn events_by_move_event_struct_name( &self, struct_name: &StructTag, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn events_by_move_event_module( &self, module_id: &ModuleId, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn events_by_sender( &self, sender: &SuiAddress, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn event_iterator( &self, start_time: u64, end_time: u64, tx_seq: TxSequenceNumber, event_seq: usize, limit: usize, descending: bool, ) -> SuiResult<Vec<(TransactionEventsDigest, TransactionDigest, usize, u64)>>
pub fn prune(&self, cut_time_ms: u64) -> SuiResult<TxSequenceNumber>
pub fn get_dynamic_fields_iterator( &self, object: ObjectID, cursor: Option<ObjectID>, ) -> SuiResult<impl Iterator<Item = Result<(ObjectID, DynamicFieldInfo), TypedStoreError>> + '_>
pub fn get_dynamic_field_object_id( &self, object: ObjectID, name_type: TypeTag, name_bcs_bytes: &[u8], ) -> SuiResult<Option<ObjectID>>
pub fn get_owner_objects( &self, owner: SuiAddress, cursor: Option<ObjectID>, limit: usize, filter: Option<SuiObjectDataFilter>, ) -> SuiResult<Vec<ObjectInfo>>
pub fn get_owned_coins_iterator( coin_index: &DBMap<CoinIndexKey2, CoinInfo>, owner: SuiAddress, coin_type_tag: Option<String>, ) -> SuiResult<impl Iterator<Item = (CoinIndexKey2, CoinInfo)> + '_>
pub fn get_owned_coins_iterator_with_cursor( &self, owner: SuiAddress, cursor: (String, u64, ObjectID), limit: usize, one_coin_type_only: bool, ) -> SuiResult<impl Iterator<Item = (CoinIndexKey2, CoinInfo)> + '_>
Sourcepub fn get_owner_objects_iterator(
&self,
owner: SuiAddress,
starting_object_id: ObjectID,
filter: Option<SuiObjectDataFilter>,
) -> SuiResult<impl Iterator<Item = ObjectInfo> + '_>
pub fn get_owner_objects_iterator( &self, owner: SuiAddress, starting_object_id: ObjectID, filter: Option<SuiObjectDataFilter>, ) -> SuiResult<impl Iterator<Item = ObjectInfo> + '_>
starting_object_id can be used to implement pagination, where a client remembers the last object id of each page, and use it to query the next page.
pub fn insert_genesis_objects( &self, object_index_changes: ObjectIndexChanges, ) -> SuiResult
pub fn is_empty(&self) -> bool
pub fn checkpoint_db(&self, path: &Path) -> SuiResult
Sourcepub fn get_balance(
&self,
owner: SuiAddress,
coin_type: TypeTag,
) -> SuiResult<TotalBalance>
pub fn get_balance( &self, owner: SuiAddress, coin_type: TypeTag, ) -> SuiResult<TotalBalance>
This method first gets the balance from per_coin_type_balance cache. On a cache miss, it
gets the balance for passed in coin_type from the all_balance cache. Only on the second
cache miss, we go to the database (expensive) and update the cache. Notice that db read is
done with spawn_blocking as that is expected to block
Sourcepub fn get_all_balance(
&self,
owner: SuiAddress,
) -> SuiResult<Arc<HashMap<TypeTag, TotalBalance>>>
pub fn get_all_balance( &self, owner: SuiAddress, ) -> SuiResult<Arc<HashMap<TypeTag, TotalBalance>>>
This method gets the balance for all coin types from the all_balance cache. On a cache miss,
we go to the database (expensive) and update the cache. This cache is dual purpose in the
sense that it not only serves get_AllBalance() calls but is also used for serving
get_Balance() queries. Notice that db read is performed with spawn_blocking as that is
expected to block
Sourcepub fn get_balance_from_db(
metrics: Arc<IndexStoreMetrics>,
coin_index: DBMap<CoinIndexKey2, CoinInfo>,
owner: SuiAddress,
coin_type: TypeTag,
) -> SuiResult<TotalBalance>
pub fn get_balance_from_db( metrics: Arc<IndexStoreMetrics>, coin_index: DBMap<CoinIndexKey2, CoinInfo>, owner: SuiAddress, coin_type: TypeTag, ) -> SuiResult<TotalBalance>
Read balance for a SuiAddress and CoinType from the backend database
Sourcepub fn get_all_balances_from_db(
metrics: Arc<IndexStoreMetrics>,
coin_index: DBMap<CoinIndexKey2, CoinInfo>,
owner: SuiAddress,
) -> SuiResult<Arc<HashMap<TypeTag, TotalBalance>>>
pub fn get_all_balances_from_db( metrics: Arc<IndexStoreMetrics>, coin_index: DBMap<CoinIndexKey2, CoinInfo>, owner: SuiAddress, ) -> SuiResult<Arc<HashMap<TypeTag, TotalBalance>>>
Read all balances for a SuiAddress from the backend database
Auto Trait Implementations§
impl !Freeze for IndexStore
impl !RefUnwindSafe for IndexStore
impl Send for IndexStore
impl Sync for IndexStore
impl Unpin for IndexStore
impl !UnwindSafe for IndexStore
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.