pub mod diff;
pub mod merge;
pub mod query;
pub mod snapshot;
pub mod store;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Version {
pub id: i64,
pub name: String,
pub branch: String,
pub parent_id: Option<i64>,
pub description: Option<String>,
pub created_at: Option<i64>,
pub is_merged: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VersionDiff {
pub added_entities: Vec<crate::graph::Entity>,
pub removed_entities: Vec<crate::graph::Entity>,
pub common_entities: Vec<crate::graph::Entity>,
pub added_relations: Vec<crate::graph::Relation>,
pub removed_relations: Vec<crate::graph::Relation>,
pub common_relations: Vec<crate::graph::Relation>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MergeStrategy {
Union,
Intersection,
}
pub(crate) const MAX_VERSIONS: i64 = 64;
#[inline]
pub(crate) fn bit_from_slot(slot: i64) -> Option<i64> {
if (0..MAX_VERSIONS).contains(&slot) {
Some(1 << slot)
} else {
None
}
}