prk_async_dataflow/
transformers.rs1use simd_json::{derived::MutableObject, OwnedValue};
2use std::collections::HashMap;
3
4pub struct FeatureTransformer {
5 mappings: HashMap<String, Box<dyn Fn(OwnedValue) -> OwnedValue + Send + Sync>>,
6}
7
8impl FeatureTransformer {
9 pub fn new() -> Self {
10 Self {
11 mappings: HashMap::new(),
12 }
13 }
14
15 pub fn add_mapping(
16 &mut self,
17 key: String,
18 transform: Box<dyn Fn(OwnedValue) -> OwnedValue + Send + Sync>,
19 ) {
20 self.mappings.insert(key, transform);
21 }
22
23 pub fn transform<'a>(&self, mut data: OwnedValue) -> OwnedValue {
24 for (key, transform) in &self.mappings {
25 if let Some(value) = data.get_mut(key.as_str()) {
26 let new_value = transform(value.clone());
27 *value = new_value;
28 }
29 }
30 data
31 }
32}