drasi_core/evaluation/functions/
context_mutators.rs1use async_trait::async_trait;
16use drasi_query_ast::ast;
17
18use crate::evaluation::{context::SideEffects, ExpressionEvaluationContext, FunctionError};
19
20use super::ContextMutatorFunction;
21
22pub struct RetainHistory {}
23
24#[async_trait]
25impl ContextMutatorFunction for RetainHistory {
26 async fn call<'a>(
27 &self,
28 context: &ExpressionEvaluationContext<'a>,
29 _expression: &ast::FunctionExpression,
30 ) -> Result<ExpressionEvaluationContext<'a>, FunctionError> {
31 let mut new_context = context.clone();
32 match new_context.get_side_effects() {
33 SideEffects::RevertForUpdate => new_context.set_side_effects(SideEffects::Snapshot),
34 SideEffects::RevertForDelete => new_context.set_side_effects(SideEffects::Snapshot),
35 _ => {}
36 }
37
38 Ok(new_context)
39 }
40}