mod block;
pub use block::write_block;
use avro_schema::{Field as AvroField, Record, Schema as AvroSchema};
use futures::{AsyncWrite, AsyncWriteExt};
use crate::error::Result;
use super::{
write::{write_schema, AVRO_MAGIC, SYNC_NUMBER},
Compression,
};
pub async fn write_metadata<W>(
writer: &mut W,
fields: Vec<AvroField>,
compression: Option<Compression>,
) -> Result<()>
where
W: AsyncWrite + Unpin,
{
writer.write_all(&AVRO_MAGIC).await?;
let schema = AvroSchema::Record(Record::new("", fields));
let mut scratch = vec![];
write_schema(&mut scratch, &schema, compression)?;
writer.write_all(&scratch).await?;
writer.write_all(&SYNC_NUMBER).await?;
Ok(())
}