moduforge_core/model/
patch.rs1use serde::{Deserialize, Serialize};
2
3use super::{mark::Mark, node::Node, types::NodeId};
4use std::{collections::HashMap, sync::Arc};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
9pub enum Patch {
10 UpdateAttr {
12 path: Vec<String>,
14 id: NodeId,
16 old: HashMap<String, String>,
18 new: HashMap<String, String>,
20 },
21 AddNode {
23 path: Vec<String>,
25 parent_id: NodeId,
27 node: Arc<Node>,
29 },
30 AddMark {
32 path: Vec<String>,
34 node_id: NodeId,
36 mark: Mark,
38 },
39 RemoveMark {
41 path: Vec<String>,
43 parent_id: NodeId,
45 marks: Vec<Arc<Mark>>,
47 },
48 RemoveNode {
50 path: Vec<String>,
52 parent_id: NodeId,
54 nodes: Vec<Arc<Node>>,
56 },
57 MoveNode {
59 path: Vec<String>,
60 node_id: NodeId,
61 source_parent_id: NodeId,
62 target_parent_id: NodeId,
63 position: Option<usize>,
64 },
65 ReplaceNode {
66 path: Vec<String>,
67 old: Arc<Node>,
68 new: Arc<Node>,
69 },
70}