iota_analytics_indexer/writers/
mod.rs1use anyhow::Result;
6use iota_types::base_types::EpochId;
7use serde::Serialize;
8
9use crate::{FileFormat, ParquetSchema};
10
11pub mod csv_writer;
12pub mod parquet_writer;
13
14pub trait AnalyticsWriter<S: Serialize + ParquetSchema>: Send + Sync + 'static {
15 fn file_format(&self) -> Result<FileFormat>;
17 fn write(&mut self, rows: &[S]) -> Result<()>;
19 fn flush(&mut self, end_checkpoint_seq_num: u64) -> Result<bool>;
21 fn reset(&mut self, epoch_num: EpochId, start_checkpoint_seq_num: u64) -> Result<()>;
23 fn file_size(&self) -> Result<Option<u64>>;
25}