mod full;
mod partitioned;
pub use full::FullIndexWriter;
pub use partitioned::PartitionedIndexWriter;
use crate::{
CompressionType, checksum::ChecksummedWriter, encryption::EncryptionProvider,
table::index_block::KeyedBlockHandle,
};
use std::sync::Arc;
pub trait BlockIndexWriter<W: std::io::Write + std::io::Seek> {
fn register_data_block(&mut self, block_handle: KeyedBlockHandle) -> crate::Result<()>;
fn finish(
self: Box<Self>,
file_writer: &mut sfa::Writer<ChecksummedWriter<W>>,
) -> crate::Result<usize>;
fn use_compression(
self: Box<Self>,
compression: CompressionType,
) -> Box<dyn BlockIndexWriter<W>>;
fn use_restart_interval(self: Box<Self>, interval: u8) -> Box<dyn BlockIndexWriter<W>>;
fn use_partition_size(self: Box<Self>, size: u32) -> Box<dyn BlockIndexWriter<W>>;
fn use_encryption(
self: Box<Self>,
encryption: Option<Arc<dyn EncryptionProvider>>,
) -> Box<dyn BlockIndexWriter<W>>;
}