pub struct IndexStore {
pub caches: IndexStoreCaches,
/* private fields */
}
Fields§
§caches: IndexStoreCaches
Implementations§
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::Request
Source§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
Source§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.