#![deny(clippy::wildcard_enum_match_arm)]
use super::super::types::ReplicatedWrite;
use super::document;
use nodedb_physical::physical_plan::DocumentOp;
pub(super) fn document_write(op: &DocumentOp) -> Option<ReplicatedWrite> {
Some(match op {
DocumentOp::PointPut {
collection,
document_id,
value,
surrogate,
pk_bytes: _,
} => document::point_put(collection, document_id, value, surrogate.as_u32()),
DocumentOp::PointInsert {
collection,
document_id,
value,
if_absent,
surrogate,
} => document::point_insert(
collection,
document_id,
value,
*if_absent,
surrogate.as_u32(),
),
DocumentOp::PointDelete {
collection,
document_id,
surrogate,
..
} => document::point_delete(collection, document_id, surrogate.as_u32()),
DocumentOp::PointUpdate {
collection,
document_id,
updates,
surrogate,
..
} => document::point_update(collection, document_id, updates, surrogate.as_u32()),
DocumentOp::Upsert {
collection,
document_id,
value,
on_conflict_updates,
surrogate,
} => document::upsert(
collection,
document_id,
value,
on_conflict_updates,
surrogate.as_u32(),
),
DocumentOp::BulkDelete {
collection,
filters,
returning: _,
ollp_predicted_surrogates: None,
ollp_predicted_edges: None,
} => document::bulk_delete(collection, filters),
DocumentOp::BulkUpdate {
collection,
filters,
updates,
returning: _,
ollp_predicted_surrogates: None,
ollp_predicted_edges: None,
} => document::bulk_update(collection, filters, updates),
DocumentOp::InsertSelect {
target_collection,
source_collection,
source_filters,
source_limit,
} => document::insert_select(
target_collection,
source_collection,
source_filters,
*source_limit,
),
DocumentOp::BatchInsert {
collection,
documents,
surrogates,
} => document::batch_insert(collection, documents, surrogates),
DocumentOp::Merge { .. } | DocumentOp::UpdateFromJoin { .. } => return None,
DocumentOp::Truncate {
collection,
restart_identity,
} => document::truncate(collection, *restart_identity),
DocumentOp::BulkDelete { .. } | DocumentOp::BulkUpdate { .. } => return None,
DocumentOp::PointGet { .. }
| DocumentOp::Scan { .. }
| DocumentOp::RangeScan { .. }
| DocumentOp::IndexLookup { .. }
| DocumentOp::IndexedFetch { .. }
| DocumentOp::EstimateCount { .. }
| DocumentOp::MaterializeScan { .. }
| DocumentOp::Register { .. }
| DocumentOp::DropIndex { .. }
| DocumentOp::BackfillIndex { .. } => return None,
})
}