Skip to content

Commit b604e9f

Browse files
committed
refactor: move 'get_transaction_by_block_ranges' optimization to repository
1 parent 5891a2b commit b604e9f

File tree

2 files changed

+38
-47
lines changed

2 files changed

+38
-47
lines changed

internal/mithril-persistence/src/database/repository/cardano_transaction_repository.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,17 @@ impl CardanoTransactionRepository {
255255
&self,
256256
block_ranges: Vec<BlockRange>,
257257
) -> StdResult<Vec<CardanoTransactionRecord>> {
258-
self.connection
259-
.fetch_collect(GetCardanoTransactionQuery::by_block_ranges(block_ranges))
258+
let mut transactions = vec![];
259+
for block_range in block_ranges {
260+
let block_range_transactions: Vec<CardanoTransactionRecord> = self
261+
.connection
262+
.fetch_collect(GetCardanoTransactionQuery::by_block_ranges(vec![
263+
block_range,
264+
]))?;
265+
transactions.extend(block_range_transactions);
266+
}
267+
268+
Ok(transactions)
260269
}
261270

262271
/// Prune the transactions older than the given number of blocks (based on the block range root

mithril-aggregator/src/services/prover.rs

Lines changed: 27 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,10 @@ impl MithrilProverService {
9999
block_ranges: &[BlockRange],
100100
) -> StdResult<HashMap<BlockRange, Vec<CardanoTransaction>>> {
101101
let mut block_ranges_map = HashMap::new();
102-
let mut transactions = vec![];
103-
for block_range in block_ranges {
104-
let block_range_transactions = self
105-
.transaction_retriever
106-
.get_by_block_ranges(vec![block_range.clone()])
107-
.await?;
108-
transactions.extend(block_range_transactions);
109-
}
102+
let transactions = self
103+
.transaction_retriever
104+
.get_by_block_ranges(block_ranges.to_vec())
105+
.await?;
110106
for transaction in transactions {
111107
let block_range = BlockRange::from_block_number(transaction.block_number);
112108
let block_range_transactions: &mut Vec<_> =
@@ -387,15 +383,12 @@ mod tests {
387383
.return_once(move |_| Ok(transactions_to_prove));
388384

389385
let block_ranges_to_prove = test_data.block_ranges_to_prove.clone();
390-
for block_range_to_prove in block_ranges_to_prove {
391-
let block_ranges = vec![block_range_to_prove.clone()];
392-
let transactions_in_block_range_to_prove =
393-
test_data.block_ranges_map[&block_range_to_prove].clone();
394-
transaction_retriever_mock
395-
.expect_get_by_block_ranges()
396-
.with(eq(block_ranges))
397-
.return_once(move |_| Ok(transactions_in_block_range_to_prove));
398-
}
386+
let all_transactions_in_block_ranges_to_prove =
387+
test_data.all_transactions_in_block_ranges_to_prove.clone();
388+
transaction_retriever_mock
389+
.expect_get_by_block_ranges()
390+
.with(eq(block_ranges_to_prove))
391+
.return_once(move |_| Ok(all_transactions_in_block_ranges_to_prove));
399392
},
400393
|block_range_root_retriever_mock| {
401394
let block_ranges_map = test_data.block_ranges_map.clone();
@@ -444,15 +437,12 @@ mod tests {
444437
.return_once(move |_| Ok(transactions_to_prove));
445438

446439
let block_ranges_to_prove = test_data.block_ranges_to_prove.clone();
447-
for block_range_to_prove in block_ranges_to_prove {
448-
let block_ranges = vec![block_range_to_prove.clone()];
449-
let transactions_in_block_range_to_prove =
450-
test_data.block_ranges_map[&block_range_to_prove].clone();
451-
transaction_retriever_mock
452-
.expect_get_by_block_ranges()
453-
.with(eq(block_ranges))
454-
.return_once(move |_| Ok(transactions_in_block_range_to_prove));
455-
}
440+
let all_transactions_in_block_ranges_to_prove =
441+
test_data.all_transactions_in_block_ranges_to_prove.clone();
442+
transaction_retriever_mock
443+
.expect_get_by_block_ranges()
444+
.with(eq(block_ranges_to_prove))
445+
.return_once(move |_| Ok(all_transactions_in_block_ranges_to_prove));
456446
},
457447
|block_range_root_retriever_mock| {
458448
let block_ranges_map = test_data.block_ranges_map.clone();
@@ -504,15 +494,12 @@ mod tests {
504494
.return_once(move |_| Ok(transactions_to_prove));
505495

506496
let block_ranges_to_prove = test_data.block_ranges_to_prove.clone();
507-
for block_range_to_prove in block_ranges_to_prove {
508-
let block_ranges = vec![block_range_to_prove.clone()];
509-
let transactions_in_block_range_to_prove =
510-
test_data.block_ranges_map[&block_range_to_prove].clone();
511-
transaction_retriever_mock
512-
.expect_get_by_block_ranges()
513-
.with(eq(block_ranges))
514-
.return_once(move |_| Ok(transactions_in_block_range_to_prove));
515-
}
497+
let all_transactions_in_block_ranges_to_prove =
498+
test_data.all_transactions_in_block_ranges_to_prove.clone();
499+
transaction_retriever_mock
500+
.expect_get_by_block_ranges()
501+
.with(eq(block_ranges_to_prove))
502+
.return_once(move |_| Ok(all_transactions_in_block_ranges_to_prove));
516503
},
517504
|block_range_root_retriever_mock| {
518505
let block_ranges_map = test_data.block_ranges_map.clone();
@@ -589,16 +576,11 @@ mod tests {
589576
.expect_get_by_hashes()
590577
.return_once(move |_| Ok(transactions_to_prove));
591578

592-
let block_ranges_to_prove = test_data.block_ranges_to_prove.clone();
593-
for block_range_to_prove in block_ranges_to_prove {
594-
let block_ranges = vec![block_range_to_prove.clone()];
595-
let transactions_in_block_range_to_prove =
596-
test_data.block_ranges_map[&block_range_to_prove].clone();
597-
transaction_retriever_mock
598-
.expect_get_by_block_ranges()
599-
.with(eq(block_ranges))
600-
.return_once(move |_| Ok(transactions_in_block_range_to_prove));
601-
}
579+
let all_transactions_in_block_ranges_to_prove =
580+
test_data.all_transactions_in_block_ranges_to_prove.clone();
581+
transaction_retriever_mock
582+
.expect_get_by_block_ranges()
583+
.return_once(move |_| Ok(all_transactions_in_block_ranges_to_prove));
602584
},
603585
|block_range_root_retriever_mock| {
604586
block_range_root_retriever_mock

0 commit comments

Comments
 (0)