Skip to content

Commit 33033ec

Browse files
committed
Add ProjectMemberFilters.project
1 parent 7b099e0 commit 33033ec

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
SecuredList,
1010
SortablePaginationInput,
1111
} from '~/common';
12+
import { ProjectFilters } from '../../dto';
1213
import { ProjectMember } from './project-member.dto';
1314

1415
@InputType()
@@ -23,6 +24,9 @@ export abstract class ProjectMemberFilters {
2324
@OptionalField()
2425
readonly active?: boolean;
2526

27+
@FilterField(() => ProjectFilters)
28+
readonly project?: ProjectFilters & {};
29+
2630
readonly projectId?: ID;
2731
}
2832

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import {
2222
paginate,
2323
sorting,
2424
} from '~/core/database/query';
25+
import { type FilterFn } from '~/core/database/query/filters';
2526
import { UserRepository } from '../../user/user.repository';
27+
import { type ProjectFilters } from '../dto';
28+
import { projectFilters } from '../project-filters.query';
2629
import {
2730
type CreateProjectMember,
2831
ProjectMember,
@@ -187,6 +190,13 @@ export const projectMemberFilters = filter.define(() => ProjectMemberFilters, {
187190
relation('out', '', 'member', ACTIVE),
188191
node('node'),
189192
]),
193+
project: filter.sub((): FilterFn<ProjectFilters> => projectFilters)((sub) =>
194+
sub.match([
195+
node('node', 'Project'),
196+
relation('out', '', 'member', ACTIVE),
197+
node('outer'),
198+
]),
199+
),
190200
roles: filter.intersectsProp(),
191201
active: filter.isPropNotNull('inactiveAt'),
192202
});

src/core/database/query/filters.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,14 @@ export const define =
5050
<T extends Record<string, any>>(
5151
filterClass: () => AbstractClass<T>,
5252
builders: Builders<T>,
53-
) =>
54-
(filters: T | Nil) =>
53+
): FilterFn<T> =>
54+
(filters) =>
5555
builder(filters ?? {}, builders);
5656

57+
export type FilterFn<T extends Record<string, any>> = (
58+
filters: T | Nil,
59+
) => (query: Query) => void;
60+
5761
/**
5862
* A helper to split filters given and call their respective functions.
5963
* Functions can do nothing, adjust query, return an object to add conditions to

0 commit comments

Comments
 (0)