1.0.0 • Published 1 year ago

commercetools-where-builder v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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)
1.0.0

1 year ago