ocel_duckdb_export/
ocel_duckdb_export.rs1use std::{collections::HashSet, env::args, path::PathBuf};
2
3use process_mining::{Exportable, Importable, OCEL};
4use std::error::Error;
5
6pub fn main() -> Result<(), Box<dyn Error>> {
7 let path_opt = args().nth(1);
8 if let Some(mut path) = path_opt.map(PathBuf::from) {
9 let mut ocel = OCEL::import_from_path(&path)?;
10 let all_obj_ids: HashSet<_> = ocel.objects.iter().map(|o| &o.id).collect();
13 for e in &mut ocel.events {
14 e.relationships
15 .retain(|r| all_obj_ids.contains(&r.object_id));
16 }
17 path.set_file_name(format!(
19 "{}.duckdb",
20 path.file_name()
21 .and_then(|p| p.to_str())
22 .unwrap_or_default()
23 ));
24 ocel.export_to_path(&path)?;
25 }
26 Ok(())
27}