Skip to content

Commit 357a0df

Browse files
committed
Replace internal projectId filter with project.id
1 parent 33033ec commit 357a0df

File tree

8 files changed

+26
-21
lines changed

8 files changed

+26
-21
lines changed

src/components/engagement/dto/list-engagements.dto.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export abstract class EngagementFilters {
4545
})
4646
readonly status?: readonly EngagementStatus[];
4747

48-
readonly projectId?: ID;
4948
@FilterField(() => ProjectFilters)
5049
readonly project?: ProjectFilters & {};
5150

src/components/engagement/engagement.repository.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -496,18 +496,24 @@ export class EngagementRepository extends CommonRepository {
496496
.subQuery((sub) =>
497497
sub
498498
.match([
499-
node('project', 'Project', pickBy({ id: input.filter?.projectId })),
499+
node(
500+
'project',
501+
'Project',
502+
pickBy({ id: input.filter?.project?.id }),
503+
),
500504
relation('out', '', 'engagement', ACTIVE),
501505
node('node', 'Engagement'),
502506
])
503507
.apply(whereNotDeletedInChangeset(changeset))
504508
.return(['node', 'project'])
505509
.apply((q) =>
506-
changeset && input.filter?.projectId
510+
changeset && input.filter?.project?.id
507511
? q
508512
.union()
509513
.match([
510-
node('project', 'Project', { id: input.filter.projectId }),
514+
node('project', 'Project', {
515+
id: input.filter.project?.id,
516+
}),
511517
relation('out', '', 'engagement', INACTIVE),
512518
node('node', 'Engagement'),
513519
relation('in', '', 'changeset', ACTIVE),
@@ -739,11 +745,6 @@ export const engagementFilters = filter.define(() => EngagementFilters, {
739745
),
740746
}),
741747
status: filter.stringListProp(),
742-
projectId: filter.pathExists((id) => [
743-
node('node'),
744-
relation('in', '', 'engagement'),
745-
node('project', 'Project', { id }),
746-
]),
747748
partnerId: filter.pathExists((id) => [
748749
node('node'),
749750
relation('in', '', 'engagement'),

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import {
2929

3030
@InputType()
3131
export abstract class ProjectFilters {
32+
readonly id?: ID<'Project'>;
33+
3234
@OptionalField()
3335
readonly name?: string;
3436

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { projectMemberFilters } from './project-member/project-member.repository
2020
import { ProjectNameIndex } from './project.repository';
2121

2222
export const projectFilters = filter.define(() => ProjectFilters, {
23+
id: filter.baseNodeProp(),
2324
type: filter.stringListBaseNodeProp(),
2425
pinned: filter.isPinned,
2526
status: filter.stringListProp(),

src/components/project/project-member/dto/list-project-members.dto.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { InputType, ObjectType } from '@nestjs/graphql';
22
import {
33
FilterField,
4-
type ID,
54
ListField,
65
OptionalField,
76
PaginatedList,
@@ -26,8 +25,6 @@ export abstract class ProjectMemberFilters {
2625

2726
@FilterField(() => ProjectFilters)
2827
readonly project?: ProjectFilters & {};
29-
30-
readonly projectId?: ID;
3128
}
3229

3330
@InputType()

src/components/project/project-member/project-member.repository.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,15 @@ export class ProjectMemberRepository extends DtoRepository(ProjectMember) {
161161
return result!; // result from paginate() will always have 1 row.
162162
}
163163

164-
async listAsNotifiers(projectId: ID, roles?: Role[]) {
164+
async listAsNotifiers(project: ID<'Project'>, roles?: Role[]) {
165165
return await this.db
166166
.query()
167167
.match([
168168
node('node', 'ProjectMember'),
169169
relation('out', '', 'user', ACTIVE),
170170
node('user', 'User'),
171171
])
172-
.apply(projectMemberFilters({ projectId, roles }))
172+
.apply(projectMemberFilters({ project: { id: project }, roles }))
173173
.with('user')
174174
.optionalMatch([
175175
node('user'),
@@ -185,11 +185,6 @@ export class ProjectMemberRepository extends DtoRepository(ProjectMember) {
185185
}
186186

187187
export const projectMemberFilters = filter.define(() => ProjectMemberFilters, {
188-
projectId: filter.pathExists((id) => [
189-
node('', 'Project', { id }),
190-
relation('out', '', 'member', ACTIVE),
191-
node('node'),
192-
]),
193188
project: filter.sub((): FilterFn<ProjectFilters> => projectFilters)((sub) =>
194189
sub.match([
195190
node('node', 'Project'),

src/components/project/project.service.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,10 @@ export class ProjectService {
354354
...input,
355355
filter: {
356356
...input.filter,
357-
projectId: project.id,
357+
project: {
358+
id: project.id,
359+
...input.filter?.project,
360+
},
358361
},
359362
},
360363
view,
@@ -379,7 +382,10 @@ export class ProjectService {
379382
...input,
380383
filter: {
381384
...input.filter,
382-
projectId: project.id,
385+
project: {
386+
id: project.id,
387+
...input.filter?.project,
388+
},
383389
},
384390
});
385391

src/core/database/query/filters.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ export const propVal =
112112
return { [prop ?? key]: cond };
113113
};
114114

115+
export const baseNodeProp =
116+
<T>(prop?: string): Builder<T> =>
117+
({ key, value }) => ({ [`node.${prop ?? key}`]: value });
118+
115119
export const propPartialVal =
116120
<T, K extends ConditionalKeys<Required<T>, string>>(
117121
prop?: string,

0 commit comments

Comments
 (0)