stratus/eth/primitives/
timestamp_filter.rs

1use serde::Deserialize;
2use serde::Serialize;
3
4use crate::eth::primitives::UnixTime;
5#[derive(Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq, Default, strum::Display, Hash)]
6#[cfg_attr(test, derive(fake::Dummy))]
7#[serde(rename_all = "camelCase")]
8pub enum BlockTimestampSeekMode {
9    #[default]
10    ExactOrPrevious,
11    ExactOrNext,
12}
13
14#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
15#[cfg_attr(test, derive(fake::Dummy))]
16pub struct BlockTimestampFilter {
17    pub timestamp: UnixTime,
18    #[serde(default)]
19    pub mode: BlockTimestampSeekMode,
20}
21
22impl From<BlockTimestampSeekMode> for rocksdb::Direction {
23    fn from(value: BlockTimestampSeekMode) -> Self {
24        match value {
25            BlockTimestampSeekMode::ExactOrNext => rocksdb::Direction::Forward,
26            BlockTimestampSeekMode::ExactOrPrevious => rocksdb::Direction::Reverse,
27        }
28    }
29}