use serde::{Deserialize, Serialize};
use crate::types::{Edge, EdgeId, Node, NodeId, Value};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum PropertyTarget {
Node(NodeId),
Edge(EdgeId),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Operation {
CreateNode { node: Node },
CreateEdge { edge: Edge },
SetProperty { target: PropertyTarget, key: String, value: Value },
RemoveProperty { target: PropertyTarget, key: String },
AddLabel { node_id: NodeId, label: String },
RemoveLabel { node_id: NodeId, label: String },
DeleteNode { node_id: NodeId },
DeleteNodeDetach { node_id: NodeId },
DeleteEdge { edge_id: EdgeId },
CreateIndex { label: String, property: String },
DropIndex { label: String, property: String },
}