use std::collections::HashMap;
use hifitime::Epoch;
use parquet::{
basic::{Compression, ZstdLevel},
file::metadata::KeyValue,
file::properties::WriterProperties,
};
pub(crate) fn pq_writer(metadata: Option<HashMap<String, String>>) -> Option<WriterProperties> {
let bldr = WriterProperties::builder()
.set_compression(Compression::ZSTD(ZstdLevel::try_new(10).unwrap()));
let mut file_metadata = vec![
KeyValue::new("Generated by".to_string(), prj_name_ver()),
KeyValue::new(
format!("{} License", env!("CARGO_PKG_VERSION")),
"AGPL 3.0".to_string(),
),
KeyValue::new(
"Created on".to_string(),
format!("{}", Epoch::now().unwrap()),
),
];
if let Some(custom_md) = metadata {
for (k, v) in custom_md {
file_metadata.push(KeyValue::new(k, v));
}
}
Some(bldr.set_key_value_metadata(Some(file_metadata)).build())
}
pub(crate) fn prj_name_ver() -> String {
format!("Nyx Space v{}", env!("CARGO_PKG_VERSION"))
}