createWhere
createWhere<
R>():object
Defined in: packages/schema/src/filter/where.ts:49
Builds filters in code, for the client and the UI, as where does, with field names and values typed against the
resource R: createWhere<typeof orders>().eq('status', 'paid'). A filter it builds prints as filter text with
printFilter.
Type Parameters
Section titled “Type Parameters”R extends object = { $fields: Record<string, Field<any>>; }
Returns
Section titled “Returns”ago: (
duration) =>FilterValue
A time the duration before now, such as ago('7d') for now() - 7d; units are s, m, h, d and w.
Parameters
Section titled “Parameters”duration
Section titled “duration”string
Returns
Section titled “Returns”and: (…
args) =>FilterExpr
Every filter holds; one filter is returned as it is, none throws.
Parameters
Section titled “Parameters”…FilterExpr[]
Returns
Section titled “Returns”between
Section titled “between”between: <
K>(name,low,high) =>FilterExpr
The field lies from low to high, both included.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”eq: <
K>(name,value) =>FilterExpr
The field equals the value: status = "paid".
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”fromNow
Section titled “fromNow”fromNow: (
duration) =>FilterValue
A time the duration after now, such as fromNow('1h') for now() + 1h.
Parameters
Section titled “Parameters”duration
Section titled “duration”string
Returns
Section titled “Returns”gt: <
K>(name,value) =>FilterExpr
The field is above the value: total > 100.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”gte: <
K>(name,value) =>FilterExpr
The field is at least the value: total >= 100.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”has: <
K>(name,value) =>FilterExpr
A JSON field holds the value, as a key or an element: tags:"urgent".
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
string | number | false | true
Returns
Section titled “Returns”in: <
K>(name,values) =>FilterExpr
The field equals one of the values: in(status, "paid", "sent").
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
values
Section titled “values”Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>[]
Returns
Section titled “Returns”isNull
Section titled “isNull”isNull: <
K>(name) =>FilterExpr
The field has no value: isNull(field).
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
Returns
Section titled “Returns”lt: <
K>(name,value) =>FilterExpr
The field is below the value: total < 100.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”lte: <
K>(name,value) =>FilterExpr
The field is at most the value: total <= 100.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”ne: <
K>(name,value) =>FilterExpr
The field differs from the value: status != "paid".
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
DurationLiteral | { kind: "string"; span: Span; value: string; } | { kind: "number"; raw: string; span: Span; value: number; } | { kind: "boolean"; span: Span; value: boolean; } | { kind: "timestamp"; span: Span; value: string; } | NowValue | Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Type Literal
Section titled “Type Literal”{ kind: "string"; span: Span; value: string; }
"string"
Quoted text.
Where it stands in the filter text.
string
The text, unescaped.
Type Literal
Section titled “Type Literal”{ kind: "number"; raw: string; span: Span; value: number; }
"number"
A number.
string
The number as written, which keeps digits a number cannot hold, as for bigint and decimal fields.
Where it stands in the filter text.
number
The number.
Type Literal
Section titled “Type Literal”{ kind: "boolean"; span: Span; value: boolean; }
"boolean"
true or false.
Where it stands in the filter text.
boolean
The value.
Type Literal
Section titled “Type Literal”{ kind: "timestamp"; span: Span; value: string; }
"timestamp"
An RFC 3339 timestamp.
Where it stands in the filter text.
string
The timestamp as written.
Extract<NonNullable<{ [K in string | number | symbol]: { [K in string | number | symbol]: (…)[(…)] extends Field<(…)> ? V : never }[K] }[K]>, string | number | false | true>
Returns
Section titled “Returns”not: (
arg) =>FilterExpr
The filter does not hold.
Parameters
Section titled “Parameters”Returns
Section titled “Returns”now: () =>
FilterValue
The current time, as a value to compare with: now().
Returns
Section titled “Returns”or: (…
args) =>FilterExpr
At least one filter holds; one filter is returned as it is, none throws.
Parameters
Section titled “Parameters”…FilterExpr[]
Returns
Section titled “Returns”present
Section titled “present”present: <
K>(name) =>FilterExpr
The field has a value, a JSON field one other than null: field:*.
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
Returns
Section titled “Returns”regex: <
K>(name,pattern) =>FilterExpr
The text field matches the regular expression, ignoring case: regex(field, "pattern").
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
pattern
Section titled “pattern”string
Returns
Section titled “Returns”search
Section titled “search”search: (
text) =>FilterExpr
Every word of the text appears, ignoring case, in one of the resource’s search fields: search("text").
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”similar
Section titled “similar”similar: <
K>(name,text) =>FilterExpr
The text field is close to the text by trigram similarity, typos included: similar(field, "text").
Type Parameters
Section titled “Type Parameters”K extends string
Parameters
Section titled “Parameters”K
string