use std::sync::Arc;
#[derive(Debug, Clone)]
pub enum SchemaChangeEvent {
SpaceCreated {
space_id: u64,
space_name: String,
},
SpaceDropped {
space_id: u64,
space_name: String,
},
SpaceUpdated {
space_id: u64,
space_name: String,
},
SpaceCleared {
space_id: u64,
space_name: String,
},
TagCreated {
space_id: u64,
space_name: String,
tag_id: u32,
tag_name: String,
},
TagAltered {
space_id: u64,
space_name: String,
tag_id: u32,
tag_name: String,
added_properties: Vec<String>,
removed_properties: Vec<String>,
},
TagDropped {
space_id: u64,
space_name: String,
tag_id: u32,
tag_name: String,
},
TagRenamed {
space_id: u64,
space_name: String,
tag_id: u32,
old_name: String,
new_name: String,
},
EdgeTypeCreated {
space_id: u64,
space_name: String,
edge_type_id: u32,
type_name: String,
},
EdgeTypeAltered {
space_id: u64,
space_name: String,
edge_type_id: u32,
type_name: String,
added_properties: Vec<String>,
removed_properties: Vec<String>,
},
EdgeTypeDropped {
space_id: u64,
space_name: String,
edge_type_id: u32,
type_name: String,
},
EdgeTypeRenamed {
space_id: u64,
space_name: String,
edge_type_id: u32,
old_name: String,
new_name: String,
},
SequenceCreated {
name: String,
},
SequenceDropped {
name: String,
},
SequenceAltered {
name: String,
},
TagIndexCreated {
space_id: u64,
index_name: String,
},
TagIndexDropped {
space_id: u64,
index_name: String,
},
EdgeIndexCreated {
space_id: u64,
index_name: String,
},
EdgeIndexDropped {
space_id: u64,
index_name: String,
},
}
pub type SchemaChangeCallback = Arc<dyn Fn(&SchemaChangeEvent) + Send + Sync>;