【发布时间】:2019-10-16 05:53:02
【问题描述】:
我想根据以下条件返回用户的不同 git 分支:
- 不要返回主分支
- 返回没有关联拉取请求的分支
- 当没有拉取请求打开或合并时,返回与拉取请求关联的分支。
所以考虑下面的样本数据,
user = graph.addVertex(label, 'User', 'name', 'John')
branch1 = graph.addVertex(label, 'Branch', 'name', 'branch1')
branch2 = graph.addVertex(label, 'Branch', 'name', 'branch2')
branch3 = graph.addVertex(label, 'Branch', 'name', 'branch3')
branchmaster = graph.addVertex(label, 'Branch', 'name', 'master')
user.addEdge('AUTHOR_OF', branch1)
user.addEdge('AUTHOR_OF', branch2)
user.addEdge('AUTHOR_OF', branch3)
user.addEdge('AUTHOR_OF', branchmaster)
pr2 = graph.addVertex(label, 'PullRequest', 'name', 'pr2', 'state', 'OPEN')
pr3 = graph.addVertex(label, 'PullRequest', 'name', 'pr3', 'state', 'DECLINED')
branch2.addEdge('SOURCE_OF', pr2)
branch3.addEdge('SOURCE_OF', pr3)
pr22 = graph.addVertex(label, 'PullRequest', 'name', 'pr22', 'state', 'MERGED')
branch2.addEdge('SOURCE_OF', pr22)
pr23 = graph.addVertex(label, 'PullRequest', 'name', 'pr23', 'state', 'DECLINED')
branch2.addEdge('SOURCE_OF', pr23)
我想返回 branch1(因为没有关联的 PR)和 branch3(因为关联的 PR 被拒绝)
以下查询在 AWS Neptune 上不起作用,因为 Neptune 不支持 lambda 步骤:
g.V().hasLabel('User')
.out('AUTHOR_OF')
.hasLabel('Branch')
.has('name', neq('master'))
.where(out('SOURCE_OF')
.hasLabel('PullRequest').values('state').fold()
.filter{ !(it.get().contains('OPEN') || it.get().contains('MERGED')) })
.dedup()
.order().by('updated_at', desc)
【问题讨论】: