moduforge_transform/
patch.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use std::collections::HashMap;
5
6use moduforge_model::{mark::Mark, node::Node, types::NodeId};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
11pub enum Patch {
12 UpdateAttr {
14 path: Vec<String>,
16 id: NodeId,
18 old: HashMap<String, Value>,
20 new: HashMap<String, Value>,
22 },
23 AddNode {
25 path: Vec<String>,
27 parent_id: NodeId,
29 nodes: Vec<Node>,
31 },
32 AddMark {
34 path: Vec<String>,
36 node_id: NodeId,
38 marks: Vec<Mark>,
40 },
41 RemoveMark {
43 path: Vec<String>,
45 parent_id: NodeId,
47 marks: Vec<Mark>,
49 },
50 RemoveNode {
52 path: Vec<String>,
54 parent_id: NodeId,
56 nodes: Vec<Node>,
58 },
59 MoveNode {
61 path: Vec<String>,
62 node_id: NodeId,
63 source_parent_id: NodeId,
64 target_parent_id: NodeId,
65 position: Option<usize>,
66 },
67 SortChildren {
69 path: Vec<String>,
71 parent_id: NodeId,
73 old_children: Vec<NodeId>,
75 new_children: Vec<NodeId>,
77 },
78}