tabiew 0.13.1

A lightweight TUI application to view and query tabular data files, such as CSV, TSV, and parquet.
use std::fs::File;

use polars::{
    frame::DataFrame,
    io::{SerWriter, avro::AvroWriter},
};

use crate::{AppResult, misc::osc52::CopyToClipboardOsc52};

use super::traits::{Destination, WriteToFile};

#[derive(Debug, Default)]
pub struct WriteToAvro;

impl WriteToFile for WriteToAvro {
    fn write_to_file(&self, dest: Destination, data_frame: &mut DataFrame) -> AppResult<()> {
        match dest {
            Destination::File(path) => Ok(AvroWriter::new(File::create(path)?).finish(data_frame)?),
            Destination::Clipboard => {
                let mut buf = Vec::new();
                AvroWriter::new(&mut buf).finish(data_frame)?;
                buf.copy_to_clipboard_via_osc52();
                Ok(())
            }
        }
    }
}