A simple programmatic builder for CommerceTools where
Query Predicates
Performs stringification and quote escaping for string, boolean and numerical values
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"))))))
Field("bar", "baz", "foo"); // bar(baz(foo)))
And("bar", "baz"); // (bar) and (baz)
Or("bar", "baz"); // (bar) or (baz)
Compare: (field: string, operator: "=" | "!=" | ">" | "<" | ">=" | "<=" | "<>", value: number | boolean | string) => string
Compare("bar", "<=", 5); // bar <= 5
Equals("bar", 5); // bar = 5
NotEquals("bar", 5); // bar != 5
GreaterThan("bar", 5); // bar > 5
LessThan("bar", 5); // bar > 5
GreaterOrEqualThan("bar", 5); // bar >= 5
LessOrEqualThan("bar", 5); // bar <= 5
Contains("bar", "any", ["str", 123, true]); // bar contains any ("str", 123, true)
ContainsAll("bar", ["str", 123, true]); // bar contains all ("str", 123, true)
ContainsAny("bar", ["str", 123, true]); // bar contains any ("str", 123, true)
IsDefined("bar"); // bar is defined
IsNotDefined("bar"); // bar is defined
HasChanged("bar"); // bar has changed
HasNotChanged("bar"); // bar has not changed
WithinCircle("bar", 75.2345, 12.2345, 100); // bar within circle(75.2345, 12.2345, 100)