reifydb_transaction/transaction/catalog/
operator_settings.rs1use reifydb_core::{
5 interface::catalog::{change::CatalogTrackOperatorSettingsChangeOperations, flow::OperatorId},
6 row::OperatorSettings,
7};
8use reifydb_value::Result;
9
10use crate::{
11 change::{
12 Change,
13 OperationType::{Create, Delete},
14 TransactionalOperatorSettingsChanges,
15 },
16 transaction::admin::AdminTransaction,
17};
18
19impl CatalogTrackOperatorSettingsChangeOperations for AdminTransaction {
20 fn track_operator_settings_created(&mut self, operator: OperatorId, settings: OperatorSettings) -> Result<()> {
21 let change = Change {
22 pre: None,
23 post: Some((operator, settings)),
24 op: Create,
25 };
26 self.changes.add_operator_settings_change(change);
27 Ok(())
28 }
29}
30
31impl TransactionalOperatorSettingsChanges for AdminTransaction {
32 fn find_operator_settings(&self, operator: OperatorId) -> Option<&OperatorSettings> {
33 for change in self.changes.operator_settings.iter().rev() {
34 if let Some((o, settings)) = &change.post {
35 if *o == operator {
36 return Some(settings);
37 }
38 } else if let Some((o, _)) = &change.pre
39 && *o == operator && change.op == Delete
40 {
41 return None;
42 }
43 }
44 None
45 }
46}