We have 'users' record and has 'friend' edge as relationship to other users. I want to soft delete the relation by adding isDeleted property to the 'friend' edge and filter the results based on that property. How do we query that case?
We have 'users' record and has 'friend' edge as relationship to other users. I want to soft delete the relation by adding isDeleted property to the 'friend' edge and filter the results based on that property. How do we query that case?
Adding 4 users:
g.addV('users').property(id,'user1').addV('users').property(id,'user2').addV('users').property(id,'user3').addV('users').property(id,'user4')
Adding a friend relation from user1 to user2, user3 and user4
g.V('user1').addE('Friend').to(V('user2')).next()
g.V('user1').addE('Friend').to(V('user3')).next()
g.V('user1').addE('Friend').to(V('user4')).next()
Checking all friend with an edge which doens't contain isDeleted flag
gremlin> g.V('user1').outE().hasNot('isDeleted').inV()
==>v[user2]
==>v[user3]
==>v[user4]
Marking edge between user1 and user2 as deleted
g.V('user1').outE().as('myEdge').inV().has(id,'user2').select('myEdge').property('isDeleted',true)
Get Deleted Friends for user1 , edges with isDeleted flag true
gremlin> g.V('user1').outE().has('isDeleted',true).inV()
==>v[user2]
Get Current Friends for user1, without isDeleted flag.
gremlin> g.V('user1').outE().hasNot('isDeleted').inV()
==>v[user3]
==>v[user4]