1.0.0 • Published 11 months ago

sieve-ts-test v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
11 months ago

Sieve

Node.js /Typescript types and services for Biarity/Sieve.

HttpParam or Sieve

If you use the Sieve package for filtering in your (.NET) back-end then you probably only have to look at the SieveFilterService. If however, you use this package for multiple back-ends you can use the HttpParamFilterService as the fall-back to use "regular" http-params

Usage

  1. construct a filter using the models:

     const filter = new Filter({
      pageIndex: 2,
      pageSize: 45,
      sorts: [
        {
          field: "testField",
          direction: SortDirection.Ascending,
        },
      ],
      filters: [
        {
          fields: ["firstField", "secondField"],
          values: ["singleValue"],
          operator: Operators.CONTAINS,
        },
      ],
    })
  2. create a service and use it:

    // user either one, both will return a string
    const service = new SieveFilterService();
    const service = new HttpParamService();
  3. use the service to create a usable value:

    console.log(service.toValue(filter));
  4. Observe the output:

    // The Sieve service will have combined the fields together into a single filter:
    page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField
    
    // the HTTP service will simply pass both variables:
    page=3&pageSize=45&firstField=singleValue&secondField=singleValue&testField=+

Retrieving filter objects from the URL

You can also give the FilterService the URL query parameter string and have it figure out the filter structure. Let's try it with a rather complicated query param string: page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField

// create service
const sieveService = new SieveFilterService();

// parse filter
const filters = sieveService.parse(
  "page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField",
);

// output
console.log(JSON.stringify(filters, null, 2));

Customized Sieve instances

If you have customized parts of your back-end Sieve you can also pass along the custom options to the SieveService. Let's say we've customized the word "page" to someOtherWordForPage and the character to split filter keys from | to ~, our config would look like this:

  const sieveService = new SieveFilterService({
    ...SIEVE_CONSTANTS,
    page: "someOtherWordForPage",
    keySplitChar: "~",
  });

Which would result in the following result instead:

  someOtherWordForPage=3&pagesize=45&Filters=(firstField~secondField)@=singleValue&Sorts=testField
1.0.0

11 months ago