use nodedb_types::{Surrogate, SurrogateBitmap};
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
serde::Serialize,
serde::Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub enum ColumnarInsertIntent {
Insert,
InsertIfAbsent,
Put,
}
#[derive(
Debug,
Clone,
PartialEq,
serde::Serialize,
serde::Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub enum ColumnarOp {
Scan {
collection: String,
projection: Vec<String>,
limit: usize,
filters: Vec<u8>,
rls_filters: Vec<u8>,
sort_keys: Vec<(String, bool)>,
#[serde(default)]
system_as_of_ms: Option<i64>,
#[serde(default)]
valid_at_ms: Option<i64>,
#[serde(default)]
prefilter: Option<SurrogateBitmap>,
},
Insert {
collection: String,
payload: Vec<u8>,
format: String,
intent: ColumnarInsertIntent,
on_conflict_updates: Vec<(String, super::document::UpdateValue)>,
surrogates: Vec<Surrogate>,
},
Update {
collection: String,
filters: Vec<u8>,
updates: Vec<(String, Vec<u8>)>,
},
Delete {
collection: String,
filters: Vec<u8>,
},
MaterializeScan {
collection: String,
cursor: Vec<u8>,
count: usize,
system_as_of_ms: Option<i64>,
},
}