#![deny(clippy::wildcard_enum_match_arm)]
use super::super::types::ReplicatedWrite;
use super::{columnar, entry::encode_provenance};
use nodedb_physical::physical_plan::{ColumnarOp, SpatialOp, TextOp, TimeseriesOp};
pub(super) fn columnar_write(op: &ColumnarOp) -> Option<ReplicatedWrite> {
Some(match op {
ColumnarOp::Insert {
collection,
payload,
surrogates,
schema_bytes,
provenance,
..
} => columnar::columnar_ingest(
collection,
payload,
surrogates,
schema_bytes,
encode_provenance(provenance),
),
ColumnarOp::Delete {
collection,
filters,
} => columnar::bulk_delete(collection, filters),
ColumnarOp::Update {
collection,
filters,
updates,
} => columnar::bulk_update(collection, filters, updates),
ColumnarOp::Scan { .. } | ColumnarOp::MaterializeScan { .. } => return None,
})
}
pub(super) fn timeseries_write(op: &TimeseriesOp) -> Option<ReplicatedWrite> {
Some(match op {
TimeseriesOp::Ingest {
collection,
payload,
format,
surrogates,
provenance,
..
} => columnar::timeseries_ingest(
collection,
payload,
format,
surrogates,
encode_provenance(provenance),
),
TimeseriesOp::Scan { .. } => return None,
})
}
pub(super) fn text_write(op: &TextOp) -> Option<ReplicatedWrite> {
Some(match op {
TextOp::FtsIndexDoc {
collection,
surrogate,
text,
provenance,
} => columnar::fts_index(
collection,
surrogate.as_u32(),
text,
encode_provenance(provenance),
),
TextOp::FtsDeleteDoc {
collection,
surrogate,
provenance,
} => columnar::fts_delete(
collection,
surrogate.as_u32(),
encode_provenance(provenance),
),
TextOp::Search { .. }
| TextOp::BM25ScoreScan { .. }
| TextOp::PhraseSearch { .. }
| TextOp::HybridSearch { .. }
| TextOp::HybridSearchTriple { .. }
| TextOp::SetAnalyzer { .. } => return None,
})
}
pub(super) fn spatial_write(op: &SpatialOp) -> Option<ReplicatedWrite> {
Some(match op {
SpatialOp::Insert {
collection,
field,
surrogate,
geometry,
provenance,
} => columnar::spatial_insert(
collection,
field,
surrogate.as_u32(),
geometry,
encode_provenance(provenance),
),
SpatialOp::Delete {
collection,
field,
surrogate,
provenance,
} => columnar::spatial_delete(
collection,
field,
surrogate.as_u32(),
encode_provenance(provenance),
),
SpatialOp::Scan { .. } => return None,
})
}