use crate::kernel::lsm::table::meta::TableMeta;
use crate::kernel::lsm::table::scope::Scope;
use serde::{Deserialize, Serialize};
use std::cmp::Ordering;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub(crate) enum VersionEdit {
DeleteFile((Vec<i64>, usize), TableMeta),
NewFile((Vec<Scope>, usize), usize, TableMeta),
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub(crate) enum EditType {
Add(TableMeta),
Del(TableMeta),
}
impl EditType {
fn ord_num(&self) -> usize {
match self {
EditType::Add(_) => 0,
EditType::Del(_) => 1,
}
}
}
impl Ord for EditType {
fn cmp(&self, other: &Self) -> Ordering {
self.ord_num().cmp(&other.ord_num())
}
}
impl PartialOrd for EditType {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}