use serde::{Deserialize, Serialize};
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointIndexEntry {
pub key: Vec<u8>,
pub primary_keys: Vec<Vec<u8>>,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointFieldIndex {
pub field: String,
pub field_position: u64,
pub entries: Vec<KvCheckpointIndexEntry>,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointCompositeIndex {
pub fields: Vec<String>,
pub field_positions: Vec<u64>,
pub entries: Vec<KvCheckpointIndexEntry>,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointSortColumn {
pub name: String,
pub direction: String,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointSortedEntry {
pub sort_key: Vec<u8>,
pub primary_key: Vec<u8>,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointSortedIndex {
pub name: String,
pub collection: String,
pub key_column: String,
pub sort_columns: Vec<KvCheckpointSortColumn>,
pub window_type: String,
pub window_timestamp_column: String,
pub window_start_ms: u64,
pub window_end_ms: u64,
pub entries: Vec<KvCheckpointSortedEntry>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointIndexes {
pub fields: Vec<KvCheckpointFieldIndex>,
pub composites: Vec<KvCheckpointCompositeIndex>,
pub sorted: Vec<KvCheckpointSortedIndex>,
}