Skip to content

treedomtrees/commercetools-where-string-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

@treedom/commercetools-where-string-builder

plant-a-tree

A simple programmatic builder for CommerceTools where Query Predicates

Performs stringification and quote escaping for string, boolean and numerical values

Made with ❀️ at  Treedom, join us in making a difference!

Usage

import { Field, Equals, And } from "@treedom/commercetools-where-string-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)

In: (field: string, values: Array<number | boolean | string>) => string

In("bar", ["str", 123, true]); // bar in ("str", 123, true)

NotIn: (field: string, values: Array<number | boolean | string>) => string

NotIn("bar", ["str", 123, true]); // bar not in ("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)

🌳 Join Us in Making a Difference! 🌳

We invite all developers who use Treedom's open-source code to support our mission of sustainability by planting a tree with us. By contributing to reforestation efforts, you help create a healthier planet and give back to the environment. Visit our Treedom Open Source Forest to plant your tree today and join our community of eco-conscious developers.

Additionally, you can integrate the Treedom GitHub badge into your repository to showcase the number of trees in your Treedom forest and encourage others to plant new ones. Check out our integration guide to get started.

Together, we can make a lasting impact! πŸŒπŸ’š

Contributing

Contributions are welcome! Please read the contributing guidelines before submitting a pull request.

License

This project is licensed under the MIT License.