@@ -708,3 +708,67 @@ function setSolvable!(dfg::CloudGraphsDFG, sym::Symbol, solvable::Int)::Int
708
708
solvable)
709
709
return solvable
710
710
end
711
+
712
+
713
+ # #==============================================================================
714
+ # # TAGS as a set, list, merge, remove, empty
715
+ # # CloudGraphsDFG functions
716
+ # #==============================================================================
717
+ function RESERVED_mergeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
718
+
719
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
720
+ dfg. userId,
721
+ dfg. robotId,
722
+ dfg. sessionId,
723
+ sym)
724
+
725
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
726
+
727
+ addnodelabels (neo4jNode, string .(tags))
728
+
729
+ return Set (setdiff (Symbol .(getnodelabels (neo4jNode)), Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]), [sym]))
730
+
731
+ end
732
+
733
+
734
+ function RESERVED_removeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
735
+
736
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
737
+ dfg. userId,
738
+ dfg. robotId,
739
+ dfg. sessionId,
740
+ sym)
741
+
742
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
743
+
744
+ shouldStay = Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]) ∪ [sym, :VARIABLE , :FACTOR ]
745
+
746
+ for tag in tags
747
+ if tag in shouldStay
748
+ @warn (" Label:$tag is not allowed to be removed from tags and will be ignored." )
749
+ else
750
+ deletenodelabel (neo4jNode, string (tag))
751
+ end
752
+ end
753
+
754
+ return Set (setdiff (Symbol .(getnodelabels (neo4jNode)), shouldStay))
755
+
756
+ end
757
+
758
+
759
+ function RESERVED_emptyTags! (dfg:: CloudGraphsDFG , sym:: Symbol )
760
+
761
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
762
+ dfg. userId,
763
+ dfg. robotId,
764
+ dfg. sessionId,
765
+ sym)
766
+
767
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
768
+
769
+ shouldStay = Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]) ∪ [sym, :VARIABLE , :FACTOR ]
770
+ tags = setdiff (Symbol .(getnodelabels (neo4jNode)), shouldStay)
771
+ # tags = Symbol.(getnodelabels(neo4jNode))
772
+
773
+ return removeTags! (dfg, sym, tags)
774
+ end
0 commit comments