Skip to content

Commit d379e45

Browse files
authored
Merge pull request #3263 from SeedCompany/project-member-boolean
2 parents 589e65f + badc80e commit d379e45

File tree

5 files changed

+21
-1
lines changed

5 files changed

+21
-1
lines changed

src/components/project/dto/list-projects.dto.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,16 @@ export abstract class ProjectFilters {
8181
@Field({
8282
nullable: true,
8383
description: 'only mine',
84+
deprecationReason: 'Use `isMember` instead.',
8485
})
8586
readonly mine?: boolean;
8687

88+
@Field({
89+
nullable: true,
90+
description: 'Only projects that the requesting user is a member of',
91+
})
92+
readonly isMember?: boolean;
93+
8794
@Field({
8895
nullable: true,
8996
description: 'Filter for projects with two or more engagements.',

src/components/project/dto/project.dto.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ class Project extends Interfaces {
166166

167167
readonly rootDirectory: Secured<LinkTo<'Directory'> | null>;
168168

169+
@Field({
170+
description: 'Is the requesting user a member of this project?',
171+
})
172+
readonly isMember: boolean;
173+
169174
@Field({
170175
description: stripIndent`
171176
Whether or not this project and its associated languages (via engagements)

src/components/project/project-filters.query.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ export const projectFilters = filter.define(() => ProjectFilters, {
4747
relation('in', '', 'member'),
4848
node('node'),
4949
]),
50+
isMember: filter.pathExistsWhenTrue([
51+
node('requestingUser'),
52+
relation('in', '', 'user'),
53+
node('', 'ProjectMember'),
54+
relation('in', '', 'member'),
55+
node('node'),
56+
]),
5057
pinned: filter.isPinned,
5158
presetInventory: filter.propVal(),
5259
partnerId: filter.pathExists((id) => [

src/components/project/project.edgedb.repository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export class ProjectEdgeDBRepository
147147
e.op(project.modifiedAt, '<=', input.modifiedAt.beforeInclusive),
148148
]
149149
: []),
150-
input.mine != null && e.op(project.isMember, '=', input.mine),
150+
input.isMember != null && e.op(project.isMember, '=', input.isMember),
151151
input.pinned != null && e.op(project.pinned, '=', input.pinned),
152152
input.languageId &&
153153
e.op(

src/components/project/project.repository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ export class ProjectRepository extends CommonRepository {
133133
merge('props', 'changedProps', {
134134
type: 'node.type',
135135
pinned: 'exists((:User { id: $requestingUser })-[:pinned]->(node))',
136+
isMember: '"member:true" in props.scopedRoles',
136137
rootDirectory: 'rootDirectory { .id }',
137138
primaryPartnership: 'primaryPartnership { .id }',
138139
primaryLocation: 'primaryLocation { .id }',

0 commit comments

Comments
 (0)