Skip to content

Commit dc04f2a

Browse files
committed
Change SensitivitiesFilter to use ListField
1 parent 5b68783 commit dc04f2a

File tree

3 files changed

+14
-18
lines changed

3 files changed

+14
-18
lines changed

src/common/sensitivity.enum.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { applyDecorators } from '@nestjs/common';
22
import { EnumType, makeEnum } from '@seedcompany/nest';
3-
import { Transform } from 'class-transformer';
4-
import { uniq } from 'lodash';
53
import { rankSens } from '~/core/database/query';
64
import { DbSort } from './db-sort.decorator';
5+
import { ListField, ListFieldOptions } from './list-field';
76
import { OptionalField, OptionalFieldOptions } from './optional-field';
87

98
export type Sensitivity = EnumType<typeof Sensitivity>;
@@ -22,8 +21,13 @@ export const SensitivityField = (options?: OptionalFieldOptions) =>
2221
DbSort(rankSens),
2322
);
2423

25-
export const SensitivitiesFilter = () =>
26-
Transform(({ value }) => {
27-
const sens = uniq(value);
28-
return sens.length > 0 && sens.length < 3 ? sens : undefined;
24+
export const SensitivitiesFilterField = (options?: ListFieldOptions) =>
25+
ListField(() => Sensitivity, {
26+
description: 'Only these sensitivities',
27+
...options,
28+
optional: true,
29+
empty: 'omit',
30+
transform: (value) =>
31+
// If given all options, there is no need to filter
32+
!value || value.length === Sensitivity.values.size ? undefined : value,
2933
});

src/components/language/dto/list-language.dto.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
ID,
55
PaginatedList,
66
SecuredList,
7-
SensitivitiesFilter,
7+
SensitivitiesFilterField,
88
Sensitivity,
99
SortablePaginationInput,
1010
} from '~/common';
@@ -35,11 +35,7 @@ export abstract class LanguageFilters {
3535
})
3636
readonly name?: string;
3737

38-
@Field(() => [Sensitivity], {
39-
description: 'Only languages with these sensitivities',
40-
nullable: true,
41-
})
42-
@SensitivitiesFilter()
38+
@SensitivitiesFilterField()
4339
readonly sensitivity?: Sensitivity[];
4440

4541
@Field({

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
ID,
99
PaginatedList,
1010
SecuredList,
11-
SensitivitiesFilter,
11+
SensitivitiesFilterField,
1212
Sensitivity,
1313
SortablePaginationInput,
1414
} from '~/common';
@@ -37,11 +37,7 @@ export abstract class ProjectFilters {
3737
})
3838
readonly type?: ProjectType[];
3939

40-
@Field(() => [Sensitivity], {
41-
description: 'Only projects with these sensitivities',
42-
nullable: true,
43-
})
44-
@SensitivitiesFilter()
40+
@SensitivitiesFilterField()
4541
readonly sensitivity?: Sensitivity[];
4642

4743
@Field(() => [ProjectStatus], {

0 commit comments

Comments
 (0)