substreams_entity_change/
helpers.rs

1use crate::change::ToField;
2use crate::pb::entity::entity_change::Operation;
3use crate::pb::entity::{EntityChange, EntityChanges};
4use std::str;
5
6impl EntityChanges {
7    pub fn push_change<V: AsRef<str>>(
8        &mut self,
9        entity: V,
10        id: V,
11        ordinal: u64,
12        operation: Operation,
13    ) -> &mut EntityChange {
14        let entity_change = EntityChange::new(entity, id, ordinal, operation);
15        self.entity_changes.push(entity_change);
16        return self.entity_changes.last_mut().unwrap();
17    }
18}
19
20impl EntityChange {
21    pub fn new<V: AsRef<str>>(
22        entity: V,
23        id: V,
24        ordinal: u64,
25        operation: Operation,
26    ) -> EntityChange {
27        #[allow(deprecated)]
28        EntityChange {
29            entity: entity.as_ref().to_string(),
30            id: id.as_ref().to_string(),
31            ordinal,
32            operation: operation as i32,
33            fields: vec![],
34        }
35    }
36
37    pub fn change<N: AsRef<str>, T: ToField>(&mut self, name: N, change: T) -> &mut EntityChange {
38        self.fields.push(change.to_field(name));
39        self
40    }
41}