use super::change::{ChangeLog, PropertyChange, SchemaObjectType};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LabelVersionHistory {
pub label_id: u32,
pub label_name: String,
pub object_type: SchemaObjectType,
pub change_log: ChangeLog,
}
impl LabelVersionHistory {
pub fn new(label_id: u32, label_name: String, object_type: SchemaObjectType) -> Self {
Self {
label_id,
label_name: label_name.clone(),
object_type,
change_log: ChangeLog::new(object_type, label_id, label_name),
}
}
pub fn add_change(&mut self, change: PropertyChange) {
self.change_log.add_change(change);
}
pub fn latest_version(&self) -> u64 {
self.change_log.latest_version().unwrap_or(1)
}
pub fn get_versions(&self) -> Vec<u64> {
self.change_log.get_versions()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_label_version_history_creation() {
let history = LabelVersionHistory::new(1, "User".to_string(), SchemaObjectType::Vertex);
assert_eq!(history.label_id, 1);
assert_eq!(history.label_name, "User");
assert_eq!(history.latest_version(), 1);
}
}