iota_node_storage/
key_value_store.rs1use async_trait::async_trait;
6use iota_sdk_types::{
7 CheckpointContents, CheckpointDigest, ObjectId, TransactionDigest, TransactionEffects,
8 TransactionEvents, Version,
9};
10use iota_types::{
11 error::IotaResult,
12 messages_checkpoint::{CertifiedCheckpointSummary, CheckpointSequenceNumber},
13 object::Object,
14 storage::ObjectKey,
15 transaction::TransactionEnvelope,
16};
17
18pub type KVStoreTransactionData = (
19 Vec<Option<TransactionEnvelope>>,
20 Vec<Option<TransactionEffects>>,
21);
22
23pub type KVStoreCheckpointData = (
24 Vec<Option<CertifiedCheckpointSummary>>,
25 Vec<Option<CheckpointContents>>,
26 Vec<Option<CertifiedCheckpointSummary>>,
27);
28
29#[async_trait]
35pub trait TransactionKeyValueStoreTrait {
36 async fn multi_get(
37 &self,
38 transaction_keys: &[TransactionDigest],
39 effects_keys: &[TransactionDigest],
40 ) -> IotaResult<KVStoreTransactionData>;
41
42 async fn multi_get_checkpoints(
43 &self,
44 checkpoint_summaries: &[CheckpointSequenceNumber],
45 checkpoint_contents: &[CheckpointSequenceNumber],
46 checkpoint_summaries_by_digest: &[CheckpointDigest],
47 ) -> IotaResult<KVStoreCheckpointData>;
48
49 async fn get_transaction_perpetual_checkpoint(
50 &self,
51 digest: TransactionDigest,
52 ) -> IotaResult<Option<CheckpointSequenceNumber>>;
53
54 async fn get_object(&self, object_id: ObjectId, version: Version)
55 -> IotaResult<Option<Object>>;
56
57 async fn multi_get_objects(&self, object_keys: &[ObjectKey])
58 -> IotaResult<Vec<Option<Object>>>;
59
60 async fn multi_get_transactions_perpetual_checkpoints(
61 &self,
62 digests: &[TransactionDigest],
63 ) -> IotaResult<Vec<Option<CheckpointSequenceNumber>>>;
64
65 async fn multi_get_events_by_tx_digests(
66 &self,
67 digests: &[TransactionDigest],
68 ) -> IotaResult<Vec<Option<TransactionEvents>>>;
69
70 async fn evict_objects(&self, _object_keys: &[ObjectKey]) {}
72
73 async fn evict_events_by_tx_digests(&self, _digests: &[TransactionDigest]) {}
75}