use std::sync::Arc;
use bytes::Bytes;
use lance_core::{Result, datatypes::Schema};
use lance_encoding::encoder::{ArrayFieldEncodingStrategy, EncodedBatch, FieldEncodingStrategy};
use lance_io::traits::Writer as ObjectWriter;
use crate::writer::FileWriterOptions;
mod writer;
pub use writer::Writer;
pub fn encoding_strategy() -> Arc<dyn FieldEncodingStrategy> {
Arc::new(ArrayFieldEncodingStrategy::new())
}
pub fn create_writer(
object_writer: Box<dyn ObjectWriter>,
schema: Schema,
options: FileWriterOptions,
) -> Result<Writer> {
Writer::try_new(object_writer, schema, options)
}
pub fn create_lazy_writer(
object_writer: Box<dyn ObjectWriter>,
options: FileWriterOptions,
) -> Writer {
Writer::new_lazy(object_writer, options)
}
pub fn encode_self_described_batch(batch: &EncodedBatch) -> Result<Bytes> {
writer::concat_lance_footer(batch, true)
}
pub fn encode_mini_batch(batch: &EncodedBatch) -> Result<Bytes> {
writer::concat_lance_footer(batch, false)
}