This commit is contained in:
2026-04-30 10:50:37 +02:00
parent 523bbe0860
commit 37d54887d6
16 changed files with 1495 additions and 9 deletions

View File

@@ -107,6 +107,7 @@ pub struct KbTransactionResolutionService {
wallet_observation_service: crate::KbWalletObservationService,
trade_aggregation_service: crate::KbTradeAggregationService,
wallet_holding_observation_service: crate::KbWalletHoldingObservationService,
pair_candle_aggregation_service: crate::KbPairCandleAggregationService,
resolved_signatures:
std::sync::Arc<tokio::sync::Mutex<std::collections::HashSet<std::string::String>>>,
}
@@ -128,6 +129,8 @@ impl KbTransactionResolutionService {
let trade_aggregation_service = crate::KbTradeAggregationService::new(database.clone());
let wallet_holding_observation_service =
crate::KbWalletHoldingObservationService::new(database.clone());
let pair_candle_aggregation_service =
crate::KbPairCandleAggregationService::new(database.clone());
Self {
http_pool,
persistence,
@@ -140,6 +143,7 @@ impl KbTransactionResolutionService {
wallet_observation_service,
trade_aggregation_service,
wallet_holding_observation_service,
pair_candle_aggregation_service,
resolved_signatures: std::sync::Arc::new(tokio::sync::Mutex::new(
std::collections::HashSet::new(),
)),
@@ -375,6 +379,15 @@ impl KbTransactionResolutionService {
Err(error) => return Err(error),
};
let trade_event_count = trade_aggregations.len();
let pair_candle_aggregations_result = self
.pair_candle_aggregation_service
.record_transaction_by_signature(request.signature.as_str())
.await;
let pair_candle_aggregations = match pair_candle_aggregations_result {
Ok(pair_candle_aggregations) => pair_candle_aggregations,
Err(error) => return Err(error),
};
let pair_candle_count = pair_candle_aggregations.len();
let payload = serde_json::json!({
"status": "resolved",
"signature": request.signature.clone(),
@@ -389,6 +402,7 @@ impl KbTransactionResolutionService {
"walletParticipationCount": wallet_participation_count,
"walletHoldingCount": wallet_holding_count,
"tradeEventCount": trade_event_count,
"pairCandleCount": pair_candle_count,
"triggerPayload": request.trigger_payload.clone(),
"transaction": transaction_value
});