Skip to content

Commit 8c061ef

Browse files
committed
Cloud Tags SET functions where tags are not duplicated in vairables
1 parent f0a4857 commit 8c061ef

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/CloudGraphsDFG/services/CloudGraphsDFG.jl

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,3 +708,67 @@ function setSolvable!(dfg::CloudGraphsDFG, sym::Symbol, solvable::Int)::Int
708708
solvable)
709709
return solvable
710710
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

Comments
 (0)