Skip to content

sisimomo/Spring-Filter-Query-Builder

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn

Spring Filter Query Builder

A User-Friendly JavaScript/TypeScript Query Builder for Spring Filter.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Usage
  3. Documentation
  4. Contributing
  5. Contact

About The Project

Elevate your development experience with our straightforward Query Builder designed for use alongside Spring Filter. This lightweight tool boasts simplicity by being dependency-free and compatible with TypeScript and JavaScript projects.

(back to top)

Built With

  • Visual Studio Code
  • CodeSandbox
  • TypeScript
  • NPM
  • Jest

(back to top)

Usage

  1. Install the package using NPM:

    npm install spring-filter-query-builder
  2. Import the required functions from spring-filter-query-builder into your JavaScript/TypeScript file:

    import { sfAnd, sfEqual, sfGt, sfIsNull, sfLike, sfNot, sfOr } from 'spring-filter-query-builder';
  3. Here's an example of how to use the library:

    const filter = sfAnd([sfEqual('status', 'active'), sfGt('createdAt', '1-1-2000')]);
    
    console.log(filter.toString());

    This will output the generated filter query.

    Explore Further with Examples

    For additional examples, feel free to visit our CodeSandbox demo page.

(back to top)

Documentation

All classes have a toString method. So you can convert any Object of these classes to string easily.

The library exposes all methods that you will need to create a query:

Operators

  • sfAnd([ item, item, ... ]) - and's one or more expressions
  • sfOr([ item, item ... ]) - or's one or more expressions
  • sfNot(item) - not's an expression
  • sfExists(item) - exists expression

Comparators

  • sfLike(selector, value) - Like comparator
  • sfEqual(selector, value) - Equal comparator
  • sfNotEqual(selector, value) - Not equal comparator
  • sfGt(selector, value) - Greater than comparator
  • sfGe(selector, value) - Greater than or equal comparator
  • sfLt(selector, value) - Less than comparator
  • sfLe(selector, value) - Less than or equal comparator
  • sfIsNull(selector) - Is null comparator
  • sfIsNotNull(selector) - Is not null comparator
  • sfIsEmpty(selector) - Is empty comparator
  • sfIsNotEmpty(selector) - Is not empty comparator
  • sfIn(selector, [ value, value, ...]) - In comparator
  • sfNotIn(selector, [ value, value, ...]) - Not in comparator

Functions

  • sfAbsolute(selector) - Absolute function
  • sfAverage(selector) - Average function
  • sfCeiling(selector) - Ceiling function
  • sfConcat(value, value, ...) - Concat function
  • sfCount(selector) - Count function
  • sfCountDistinct(selector) - CountDistinct function
  • sfCurrentDate() - CurrentDate function
  • sfCurrentTime() - CurrentTime function
  • sfCurrentTimestamp() - CurrentTimestamp function
  • sfMin(selector) - Min function
  • sfMax(selector) - Max function
  • sfSum(selector, selector, ...) - Sum function
  • sfSize(selector) - Size function
  • sfLength(selector) - Length function
  • sfTrim(selector) - Trim function
  • sfUpper(selector) - Upper function
  • sfLower(selector) - Lower function
  • sfCustomFunction(functionName, value, value, ...) - Any other custom function

Customization

Extend any of our predefined abstract classes – Comparator, Function, and Operator – to effortlessly craft custom logic tailored to your needs.

For creating custom comparators, refer to test/custom-comparator.test.ts.

For custom functions, explore test/custom-function.test.ts.

For custom operators, explore test/custom-operator.test.ts.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Contact

LinkedIn

(back to top)