Skip to main content

nodedb_sql/engine_rules/
resolve.rs

1// SPDX-License-Identifier: Apache-2.0
2
3//! Engine-type to `EngineRules` implementation lookup.
4
5use crate::types::EngineType;
6
7use super::rules::EngineRules;
8use super::{
9    array, columnar, continuous_aggregate, document_schemaless, document_strict, kv, spatial,
10    timeseries,
11};
12
13/// Resolve the engine rules for a given engine type.
14///
15/// No catch-all — compiler enforces exhaustiveness.
16pub fn resolve_engine_rules(engine: EngineType) -> &'static dyn EngineRules {
17    match engine {
18        EngineType::DocumentSchemaless => &document_schemaless::SchemalessRules,
19        EngineType::DocumentStrict => &document_strict::StrictRules,
20        EngineType::KeyValue => &kv::KvRules,
21        EngineType::Columnar => &columnar::ColumnarRules,
22        EngineType::Timeseries => &timeseries::TimeseriesRules,
23        EngineType::Spatial => &spatial::SpatialRules,
24        EngineType::Array => &array::ArrayRules,
25        EngineType::ContinuousAggregate => &continuous_aggregate::ContinuousAggregateRules,
26    }
27}