Skip to content

Commit f85aae9

Browse files
committed
Add: Introduce new FilterType interface
Extract a FilterType interface from the Filter class. The Filter class has several purposes and mixes responsibilities. Introducing a FilterType is the first step for splitting up the responsibilities.
1 parent 330e2be commit f85aae9

1 file changed

Lines changed: 37 additions & 1 deletion

File tree

src/gmp/models/filter.ts

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,42 @@ type FilterForEachFunc = (
4444
array: FilterTerm[],
4545
) => void;
4646

47+
export interface FilterType {
48+
id?: string;
49+
all(): Filter;
50+
and(filter?: Filter): Filter;
51+
copy(): Filter;
52+
delete(key: string): Filter;
53+
equals(filter?: Filter): boolean;
54+
first(first?: number): Filter;
55+
forEach(func: FilterForEachFunc): void;
56+
getAllTerms(): readonly FilterTerm[];
57+
get(key: string, def?: string): string | number | undefined;
58+
getSortBy(): string | undefined;
59+
getSortOrder(): FilterSortOrder;
60+
getTerm(key?: string): FilterTerm | undefined;
61+
getTerms(key?: string): FilterTerm[];
62+
has(key: string): boolean;
63+
hasTerm(term?: FilterTerm): boolean;
64+
identifier(): string;
65+
merge(filter?: Filter): Filter;
66+
mergeExtraKeywords(filter?: Filter): Filter;
67+
mergeKeywords(filter?: Filter): Filter;
68+
next(): Filter;
69+
previous(): Filter;
70+
set(
71+
keyword: string,
72+
value?: string | number | boolean,
73+
relation?: string,
74+
): Filter;
75+
setSortBy(value: string): Filter;
76+
setSortOrder(value: FilterSortOrder): Filter;
77+
simple(): Filter;
78+
toFilterCriteriaString(): string;
79+
toFilterExtraString(): string;
80+
toFilterString(): string;
81+
}
82+
4783
export const UNKNOWN_FILTER_ID = '0';
4884
const SORT_ORDER_ASC = 'sort';
4985
const SORT_ORDER_DESC = 'sort-reverse';
@@ -94,7 +130,7 @@ const parseFilterTermsFromString = (
94130
/**
95131
* Represents a filter
96132
*/
97-
class Filter extends EntityModel {
133+
class Filter extends EntityModel implements FilterType {
98134
static readonly entityType = 'filter';
99135

100136
readonly alerts: Model[];

0 commit comments

Comments
 (0)