summa_core/proto_traits/
merge_policy.rs1use std::sync::Arc;
2
3use summa_proto::proto;
4
5use crate::proto_traits::Wrapper;
6
7impl From<Wrapper<Option<proto::MergePolicy>>> for Arc<dyn tantivy::merge_policy::MergePolicy> {
8 fn from(merge_policy: Wrapper<Option<proto::MergePolicy>>) -> Self {
9 match merge_policy.into_inner() {
10 None | Some(proto::MergePolicy { merge_policy: None }) => Arc::new(tantivy::merge_policy::NoMergePolicy),
11 Some(proto::MergePolicy {
12 merge_policy: Some(proto::merge_policy::MergePolicy::Log(c)),
13 }) => {
14 if c.is_frozen {
15 Arc::new(crate::components::merge_policies::LogMergePolicy::frozen())
16 } else {
17 Arc::<crate::components::merge_policies::LogMergePolicy>::default()
18 }
19 }
20 Some(proto::MergePolicy {
21 merge_policy: Some(proto::merge_policy::MergePolicy::Temporal(c)),
22 }) => Arc::new(crate::components::merge_policies::TemporalMergePolicy::new(c.merge_older_then_secs)),
23 }
24 }
25}