Skip to content

Commit

Permalink
feat(filter): add not operator
Browse files Browse the repository at this point in the history
  • Loading branch information
rjlopezdev committed Apr 2, 2019
1 parent a2f1b9f commit e019db3
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
10 changes: 8 additions & 2 deletions src/field-filter.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { AbstractFilter } from './filter';
import { LookupFilter } from './lookup.enum';
import { Like, IsNull, LessThan, LessThanOrEqual, MoreThan, MoreThanOrEqual, In, Between } from 'typeorm';
import { Like, IsNull, LessThan, LessThanOrEqual, MoreThan, MoreThanOrEqual, In, Between, Not } from 'typeorm';

export class FieldFilter extends AbstractFilter {

constructor(query: any, prop: string, lookup: LookupFilter, value: string) {
private notOperator: boolean;

constructor(query: any, prop: string, lookup: LookupFilter, value: string, notOperator: boolean = false) {
super(query, prop, lookup, value);
this.notOperator = notOperator;
}

public buildQuery() {
Expand Down Expand Up @@ -48,6 +51,9 @@ export class FieldFilter extends AbstractFilter {
queryToAdd = { [this.prop]: Between(+rangeValues[0], +rangeValues[1]) };
break;
}
if(this.notOperator) {
queryToAdd[this.prop] = Not(queryToAdd[this.prop]);
}
this.query['where'] = {
...this.query['where'],
...queryToAdd
Expand Down
5 changes: 3 additions & 2 deletions src/filter-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ export class FilterFactory {
public get(query: any, key: string, value: string): AbstractFilter {
if (this.isFieldFilter(key)) {
const field = key.split(LookupDelimiter.LOOKUP_DELIMITER)[0];
const notQuery = key.includes(`${LookupDelimiter.LOOKUP_DELIMITER}${LookupFilter.NOT}`);
const lookup = key.includes(LookupDelimiter.LOOKUP_DELIMITER)
? key.split(LookupDelimiter.LOOKUP_DELIMITER)[1] as LookupFilter
? key.split(LookupDelimiter.LOOKUP_DELIMITER)[notQuery ? 2 : 1] as LookupFilter
: LookupFilter.EXACT;
return new FieldFilter(query, field, lookup, value);
return new FieldFilter(query, field, lookup, value, notQuery);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/lookup.enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ export enum LookupFilter {
STARTS_WITH = 'startswith',
ENDS_WITH = 'endswith',
IN = 'in',
BETWEEN = 'between'
BETWEEN = 'between',
NOT = 'not',
}

export enum LookupDelimiter {
Expand Down

0 comments on commit e019db3

Please sign in to comment.