commercetools-where-builder
v1.0.0
Published
A simple programmatic builder for CommerceTools `where` [Query Predicates](https://docs.commercetools.com/api/predicates/query)
Downloads
26,085
Readme
commercetools-where-builder
A simple programmatic builder for CommerceTools where
Query Predicates
Performs stringification and quote escaping for string, boolean and numerical values
Usage
import { Field, Equals, And } from "commercetools-where-builder";
Field(
"masterData",
"current",
"masterVariant",
And(
Equals("key", "my-variant-key"),
Field(
"attributes",
And(
Equals("name", "my-attribute-key"),
Equals("value", "my-attribute-value")
)
)
)
);
This snippet builds the following where query string
masterData(current(masterVariant((key = "my-variant-key") and (attributes((name = "my-attribute-key") and (value = "my-attribute-value"))))))
Predicates
Field: (...fields: Array<string>) => string
Field("bar", "baz", "foo"); // bar(baz(foo)))
And: (...fields: Array<string | Array>) => string
And("bar", "baz"); // (bar) and (baz)
Or: (...fields: Array<string | Array>) => string
Or("bar", "baz"); // (bar) or (baz)
Compare: (field: string, operator: "=" | "!=" | ">" | "<" | ">=" | "<=" | "<>", value: number | boolean | string) => string
Compare("bar", "<=", 5); // bar <= 5
Equals: (field: string, value: number | boolean | string) => string
Equals("bar", 5); // bar = 5
NotEquals: (field: string, value: number | boolean | string) => string
NotEquals("bar", 5); // bar != 5
GreaterThan: (field: string, value: number | string) => string
GreaterThan("bar", 5); // bar > 5
LessThan: (field: string, value: number | string) => string
LessThan("bar", 5); // bar > 5
GreaterOrEqualThan: (field: string, value: number | string) => string
GreaterOrEqualThan("bar", 5); // bar >= 5
LessOrEqualThan: (field: string, value: number | string) => string
LessOrEqualThan("bar", 5); // bar <= 5
Contains: (field: string, kind: "any" | "all", values: Array<number | boolean | string>) => string
Contains("bar", "any", ["str", 123, true]); // bar contains any ("str", 123, true)
ContainsAll: (field: string, values: Array<number | boolean | string>) => string
ContainsAll("bar", ["str", 123, true]); // bar contains all ("str", 123, true)
ContainsAny: (field: string, values: Array<number | boolean | string>) => string
ContainsAny("bar", ["str", 123, true]); // bar contains any ("str", 123, true)
IsDefined: (field: string) => string
IsDefined("bar"); // bar is defined
IsNotDefined: (field: string) => string
IsNotDefined("bar"); // bar is defined
HasChanged: (field: string) => string
HasChanged("bar"); // bar has changed
HasNotChanged: (field: string) => string
HasNotChanged("bar"); // bar has not changed
WithinCircle: (field: string, latitude: number, longitude: number, radius: number) => string
WithinCircle("bar", 75.2345, 12.2345, 100); // bar within circle(75.2345, 12.2345, 100)