use apibara_dna_protocol::dna::stream::{Cursor, DataFinality, StreamDataRequest};
use prost::Message;
#[derive(Debug, Clone)]
pub struct StreamDataRequestBuilder {
inner: StreamDataRequest,
}
impl StreamDataRequestBuilder {
pub fn new() -> Self {
let inner = StreamDataRequest {
finality: Some(DataFinality::Accepted as i32),
..Default::default()
};
Self { inner }
}
pub fn with_finality(mut self, finality: DataFinality) -> Self {
self.inner.finality = Some(finality as i32);
self
}
pub fn with_starting_cursor(mut self, cursor: Option<Cursor>) -> Self {
self.inner.starting_cursor = cursor;
self
}
pub fn add_filter<F: Message>(mut self, filter: F) -> Self {
self.inner.filter.push(filter.encode_to_vec());
self
}
pub fn build(self) -> StreamDataRequest {
self.inner
}
}
impl Default for StreamDataRequestBuilder {
fn default() -> Self {
Self::new()
}
}
impl From<StreamDataRequestBuilder> for StreamDataRequest {
fn from(builder: StreamDataRequestBuilder) -> Self {
builder.inner
}
}