Files
tycho-protocol-sdk/substreams/ethereum-uniswap-v4/src/modules/4_store_current_tick.rs

29 lines
888 B
Rust

use substreams::store::{StoreSet, StoreSetInt64};
use crate::pb::uniswap::v4::{
events::{pool_event, PoolEvent},
Events,
};
use substreams::store::StoreNew;
#[substreams::handlers::store]
pub fn store_pool_current_tick(events: Events, store: StoreSetInt64) {
events
.pool_events
.into_iter()
.filter_map(event_to_current_tick)
.for_each(|(pool, ordinal, new_tick_index)| {
store.set(ordinal, format!("pool:{0}", pool), &new_tick_index.into())
});
}
fn event_to_current_tick(event: PoolEvent) -> Option<(String, u64, i32)> {
match event.r#type.as_ref().unwrap() {
pool_event::Type::Initialize(initialize) => {
Some((event.pool_id, event.log_ordinal, initialize.tick))
}
pool_event::Type::Swap(swap) => Some((event.pool_id, event.log_ordinal, swap.tick)),
_ => None,
}
}