# FilterInput class · @imqueue/pg-sequelize

Source: https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput/
Published: 2026-08-01
Author: @imqueue maintainers (https://github.com/imqueue)
Package: @imqueue/pg-sequelize 4.2.0 — generated reference, not hand-written

A where clause as plain, serializable JSON.

**Signature:**

```typescript
export declare class FilterInput 
```

## Remarks

Gives a remote caller the same expressive power Sequelize offers locally — comparison, set membership, pattern matching, regular expressions and range operators, nested arbitrarily through `$and` and `$or`. Every operator is a `$`-prefixed string rather than a symbol, because symbols do not survive the wire; [FILTER\_OPS](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filter_ops/) does the translation on arrival.

Two things follow from how `query.toWhereOptions` walks it. Keys are read recursively, so a value that is itself an object is treated as a nested filter and only a non-object value ends the walk. And any key that is NOT a known operator is kept verbatim as a column name — which is what lets you mix columns and operators in one object, and also means a typo becomes a column rather than a complaint.

The declared property types are the common cases rather than hard limits; the runtime walk does not enforce them.

## Example


```typescript
// type is 'fast' or 'std', and the reservation was created this year
const filter = {
    $or: [{ type: 'fast' }, { type: 'std' }],
    createdAt: { $gte: '2026-01-01' },
} as FilterInput;
```

## Properties


| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [$adjacent?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._adjacent/) |  | \[number, number\] | _(Optional)_ Ranges touch without overlapping (Postgres `-\|-`). |
| [$and?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._and/) |  | [FilterInput](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput/) \| Array<[FilterInput](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput/) \| number \| string \| boolean \| null> | _(Optional)_ Every nested condition must hold (SQL `AND`). |
| [$any?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._any/) |  | number\[\] \| string\[\] | _(Optional)_ Equals any element of the array (Postgres `= ANY`). |
| [$between?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._between/) |  | Array<number \| string> | _(Optional)_ Within the inclusive `[low, high]` pair (SQL `BETWEEN`). |
| [$contained?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._contained/) |  | \[number, number\] | _(Optional)_ The column's range is contained by this one (Postgres `<@`). |
| [$contains?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._contains/) |  | number \| \[number, number\] | _(Optional)_ The column's range contains this value or range (Postgres `@>`). |
| [$eq?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._eq/) |  | number \| string \| boolean \| null | _(Optional)_ Equal to. With `null`, becomes `IS NULL`. |
| [$gt?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._gt/) |  | number | _(Optional)_ Greater than. |
| [$gte?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._gte/) |  | number | _(Optional)_ Greater than or equal to. |
| [$iLike?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._ilike/) |  | string | _(Optional)_ Case-insensitive pattern match (Postgres `ILIKE`). |
| [$in?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._in/) |  | Array<number \| string \| boolean \| null> | _(Optional)_ One of the listed values (SQL `IN`). An empty list matches nothing. |
| [$iRegexp?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._iregexp/) |  | string | _(Optional)_ Matches a regular expression, case-insensitively (Postgres `~*`). |
| [$like?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._like/) |  | string | _(Optional)_ Case-sensitive pattern match, `%` and `_` as wildcards (SQL `LIKE`). |
| [$lt?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._lt/) |  | number | _(Optional)_ Less than. |
| [$lte?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._lte/) |  | number | _(Optional)_ Less than or equal to. |
| [$ne?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._ne/) |  | number \| string | _(Optional)_ Not equal to. |
| [$noExtendLeft?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._noextendleft/) |  | \[number, number\] | _(Optional)_ Range does not extend past this one's left bound (Postgres `&>`). |
| [$noExtendRight?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._noextendright/) |  | \[number, number\] | _(Optional)_ Range does not extend past this one's right bound (Postgres `&<`). |
| [$not?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._not/) |  | boolean | _(Optional)_ Negates the nested condition (SQL `NOT`). |
| [$notBetween?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notbetween/) |  | Array<number \| string> | _(Optional)_ Outside the inclusive `[low, high]` pair. |
| [$notILike?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notilike/) |  | string | _(Optional)_ Fails a case-insensitive pattern match. |
| [$notIn?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notin/) |  | Array<number \| string \| boolean \| null> | _(Optional)_ None of the listed values (SQL `NOT IN`). |
| [$notIRegexp?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notiregexp/) |  | string | _(Optional)_ Fails a case-insensitive regular expression (Postgres `!~*`). |
| [$notLike?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notlike/) |  | string | _(Optional)_ Fails a case-sensitive pattern match. |
| [$notRegexp?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._notregexp/) |  | string | _(Optional)_ Fails a POSIX regular expression (Postgres `!~`). |
| [$or?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._or/) |  | [FilterInput](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput/) \| Array<[FilterInput](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput/) \| number \| string \| boolean \| null> | _(Optional)_ At least one nested condition must hold (SQL `OR`). |
| [$overlap?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._overlap/) |  | \[number, number\] | _(Optional)_ Ranges share at least one value (Postgres `&&`). |
| [$regexp?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._regexp/) |  | string | _(Optional)_ Matches a POSIX regular expression (Postgres `~`). |
| [$strictLeft?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._strictleft/) |  | \[number, number\] | _(Optional)_ Range lies entirely to the left of this one (Postgres `<<`). |
| [$strictRight?](https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.filterinput._strictright/) |  | \[number, number\] | _(Optional)_ Range lies entirely to the right of this one (Postgres `>>`). |

