Skip to content

Commit 6661509

Browse files
committed
Refactor to use upstream SubscriptionId type and IDN macros
1 parent 75409a0 commit 6661509

File tree

2 files changed

+20
-119
lines changed

2 files changed

+20
-119
lines changed

indexer/src/ideal.rs

Lines changed: 2 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,6 @@ use crate::{
1414
};
1515
use acuity_index_substrate::*;
1616

17-
/// IDN Subscription ID wrapper that handles H256 to u32 conversion
18-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19-
pub struct SubscriptionId([u8; 32]);
20-
21-
impl SubscriptionId {
22-
/// Create a new SubscriptionId from H256 bytes
23-
pub fn new(bytes: [u8; 32]) -> Self {
24-
Self(bytes)
25-
}
26-
27-
/// Convert to u32 by taking the first 4 bytes (little-endian)
28-
pub fn to_u32(&self) -> u32 {
29-
u32::from_le_bytes([self.0[0], self.0[1], self.0[2], self.0[3]])
30-
}
31-
}
32-
33-
impl From<[u8; 32]> for SubscriptionId {
34-
fn from(bytes: [u8; 32]) -> Self {
35-
Self::new(bytes)
36-
}
37-
}
38-
3917
pub struct IdealIndexer;
4018

4119
impl acuity_index_substrate::shared::RuntimeIndexer for IdealIndexer {
@@ -71,86 +49,9 @@ impl acuity_index_substrate::shared::RuntimeIndexer for IdealIndexer {
7149
Event::Balances(event) => {
7250
index_balances_event![BalancesEvent, event, indexer, block_number, event_index]
7351
},
74-
// IDN-specific event handlers
52+
// IDN-specific event handlers using upstream macros
7553
Event::IdnManager(event) => {
76-
match event {
77-
IdnManagerEvent::SubscriptionCreated { sub_id } => {
78-
let subscription_id = SubscriptionId::from(sub_id);
79-
indexer.index_event(
80-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
81-
block_number,
82-
event_index,
83-
)?;
84-
1
85-
},
86-
IdnManagerEvent::SubscriptionTerminated { sub_id } => {
87-
let subscription_id = SubscriptionId::from(sub_id);
88-
indexer.index_event(
89-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
90-
block_number,
91-
event_index,
92-
)?;
93-
1
94-
},
95-
IdnManagerEvent::SubscriptionPaused { sub_id } => {
96-
let subscription_id = SubscriptionId::from(sub_id);
97-
indexer.index_event(
98-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
99-
block_number,
100-
event_index,
101-
)?;
102-
1
103-
},
104-
IdnManagerEvent::SubscriptionUpdated { sub_id } => {
105-
let subscription_id = SubscriptionId::from(sub_id);
106-
indexer.index_event(
107-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
108-
block_number,
109-
event_index,
110-
)?;
111-
1
112-
},
113-
IdnManagerEvent::SubscriptionReactivated { sub_id } => {
114-
let subscription_id = SubscriptionId::from(sub_id);
115-
indexer.index_event(
116-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
117-
block_number,
118-
event_index,
119-
)?;
120-
1
121-
},
122-
IdnManagerEvent::RandomnessDistributed { sub_id } => {
123-
let subscription_id = SubscriptionId::from(sub_id);
124-
indexer.index_event(
125-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
126-
block_number,
127-
event_index,
128-
)?;
129-
1
130-
},
131-
IdnManagerEvent::FeesCollected { sub_id, .. } => {
132-
let subscription_id = SubscriptionId::from(sub_id);
133-
indexer.index_event(
134-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
135-
block_number,
136-
event_index,
137-
)?;
138-
1
139-
},
140-
IdnManagerEvent::SubQuoted { .. } => {
141-
// This event doesn't have a subscription ID to index by
142-
0
143-
},
144-
IdnManagerEvent::SubscriptionDistributed { sub_id } => {
145-
let subscription_id = SubscriptionId::from(sub_id);
146-
indexer.index_event(
147-
Key::Substrate(SubstrateKey::SubscriptionId(subscription_id.to_u32())),
148-
block_number,
149-
event_index,
150-
)?;
151-
1
152-
},
153-
}
54+
index_idn_manager_event![IdnManagerEvent, event, indexer, block_number, event_index]
15455
},
15556
_ => 0,
15657
})

indexer/src/tests.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use acuity_index_substrate::{shared::*, substrate::*, websockets::*, *};
22

3-
use crate::{ideal::SubscriptionId, ChainKey, IdealIndexer};
3+
use crate::{ChainKey, IdealIndexer};
44

55
#[tokio::test]
66
async fn test_process_msg_account_balance() {
@@ -71,20 +71,20 @@ async fn test_process_msg_extrinsic_hash() {
7171
assert_eq!(events[2].block_number, 4);
7272
}
7373

74-
// IDN-specific tests for SubstrateKey::SubscriptionId indexing
74+
// IDN-specific tests for SubstrateKey::SubscriptionId indexing using upstream types
7575

7676
#[tokio::test]
7777
async fn test_subscription_id_indexing() {
7878
let db_config = sled::Config::new().temporary(true);
7979
let trees = open_trees::<IdealIndexer>(db_config).unwrap();
8080
let indexer = Indexer::<IdealIndexer>::new_test(trees.clone());
8181

82-
// Create different subscription IDs
83-
let sub_id_1 = SubscriptionId::new([1u8; 32]);
84-
let sub_id_2 = SubscriptionId::new([2u8; 32]);
82+
// Create different subscription IDs using upstream SubscriptionId type
83+
let sub_id_1 = SubscriptionId::from([1u8; 32]);
84+
let sub_id_2 = SubscriptionId::from([2u8; 32]);
8585

86-
let key1 = Key::Substrate(SubstrateKey::SubscriptionId(sub_id_1.to_u32()));
87-
let key2 = Key::Substrate(SubstrateKey::SubscriptionId(sub_id_2.to_u32()));
86+
let key1 = Key::Substrate(SubstrateKey::SubscriptionId(sub_id_1));
87+
let key2 = Key::Substrate(SubstrateKey::SubscriptionId(sub_id_2));
8888

8989
// Index events for subscription 1
9090
indexer.index_event(key1.clone(), 100, 0).unwrap();
@@ -117,24 +117,24 @@ async fn test_subscription_id_indexing() {
117117
}
118118

119119
#[tokio::test]
120-
async fn test_h256_to_u32_conversion() {
121-
// Test the conversion logic
120+
async fn test_h256_to_subscription_id_conversion() {
121+
// Test the upstream SubscriptionId type conversion
122122
let test_bytes = [
123123
0x78, 0x56, 0x34, 0x12, 0xAB, 0xCD, 0xEF, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124124
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125125
];
126-
let sub_id = SubscriptionId::new(test_bytes);
126+
let sub_id = SubscriptionId::from(test_bytes);
127127

128-
// Should convert to 0x12345678 (little-endian)
129-
assert_eq!(sub_id.to_u32(), 0x12345678);
128+
// Verify that the SubscriptionId stores the full [u8; 32]
129+
assert_eq!(<SubscriptionId as AsRef<[u8; 32]>>::as_ref(&sub_id), &test_bytes);
130130

131131
// Test another case
132132
let test_bytes2 = [
133133
0xFF, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
134134
0, 0, 0, 0, 0, 0,
135135
];
136-
let sub_id2 = SubscriptionId::new(test_bytes2);
137-
assert_eq!(sub_id2.to_u32(), 0x000000FF);
136+
let sub_id2 = SubscriptionId::from(test_bytes2);
137+
assert_eq!(<SubscriptionId as AsRef<[u8; 32]>>::as_ref(&sub_id2), &test_bytes2);
138138
}
139139

140140
#[tokio::test]
@@ -143,8 +143,8 @@ async fn test_multiple_subscription_events_same_block() {
143143
let trees = open_trees::<IdealIndexer>(db_config).unwrap();
144144
let indexer = Indexer::<IdealIndexer>::new_test(trees.clone());
145145

146-
let sub_id = SubscriptionId::new([1u8; 32]);
147-
let key = Key::Substrate(SubstrateKey::SubscriptionId(sub_id.to_u32()));
146+
let sub_id = SubscriptionId::from([1u8; 32]);
147+
let key = Key::Substrate(SubstrateKey::SubscriptionId(sub_id));
148148
let block_number = 100;
149149

150150
// Index multiple events in the same block
@@ -171,8 +171,8 @@ async fn test_subscription_events_across_blocks() {
171171
let trees = open_trees::<IdealIndexer>(db_config).unwrap();
172172
let indexer = Indexer::<IdealIndexer>::new_test(trees.clone());
173173

174-
let sub_id = SubscriptionId::new([1u8; 32]);
175-
let key = Key::Substrate(SubstrateKey::SubscriptionId(sub_id.to_u32()));
174+
let sub_id = SubscriptionId::from([1u8; 32]);
175+
let key = Key::Substrate(SubstrateKey::SubscriptionId(sub_id));
176176

177177
// Index events across multiple blocks in non-sequential order
178178
indexer.index_event(key.clone(), 105, 1).unwrap();

0 commit comments

Comments
 (0)