1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::fs::File;

use polars::prelude::*;

use super::Backend;

pub struct Parquet;

/// The `Parquet` block defines a Rust module that contains `import` and `export`.
impl Backend for Parquet {
    fn import(_path: &str) -> Result<DataFrame, String> {
        todo!()
    }

    fn export(path: &str, mut df: DataFrame) -> Result<(), String> {
        let buffer = match File::create(path) {
            Ok(buffer) => buffer,
            Err(_) => return Err(String::from("Error creating the Parquet file")),
        };

        match ParquetWriter::new(buffer).finish(&mut df) {
            Ok(_) => Ok(()),
            Err(_) => Err(String::from("Error writing to the Parquet file")),
        }
    }
}