Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sisimomo/spring-filter-query-builder

A simple Typescript/JavaScript Query Builder for Spring Filter
https://github.com/sisimomo/spring-filter-query-builder

filter javascript query-builder spring spring-filter typescript

Last synced: 13 days ago
JSON representation

A simple Typescript/JavaScript Query Builder for Spring Filter

Awesome Lists containing this project

README

        

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![LinkedIn][linkedin-shield]][linkedin-url]


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](https://github.com/turkraft/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][vscode-shield]](https://code.visualstudio.com/)
- [![CodeSandbox][codesandbox-shield]](https://codesandbox.io/)
- [![TypeScript][typescript-shield]](https://www.typescriptlang.org/)
- [![NPM][npm-shield]](https://www.npmjs.com/)
- [![Jest][jest-shield]](https://jestjs.io/)

(back to top)

## Usage

1. Install the package using [NPM](https://www.npmjs.com/package/spring-filter-query-builder):

```bash
npm install spring-filter-query-builder
```

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

```js
import { sfAnd, sfEqual, sfGt, sfIsNull, sfLike, sfNot, sfOr } from 'spring-filter-query-builder';
```

3. Here's an example of how to use the library:

```js
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](https://codesandbox.io/s/demo-yp3mgd).

(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](src/comparators.ts), [Function](src/functions.ts), and [Operator](src/operator.ts) – to effortlessly craft custom logic tailored to your needs.

For creating custom comparators, refer to [test/custom-comparator.test.ts](test/custom-comparator.test.ts).

For custom functions, explore [test/custom-function.test.ts](test/custom-function.test.ts).

For custom operators, explore [test/custom-operator.test.ts](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][linkedin-shield]][linkedin-url]

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/sisimomo/Spring-Filter-Query-Builder.svg?style=for-the-badge
[contributors-url]: https://github.com/sisimomo/Spring-Filter-Query-Builder/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/sisimomo/Spring-Filter-Query-Builder.svg?style=for-the-badge
[forks-url]: https://github.com/sisimomo/Spring-Filter-Query-Builder/network/members
[stars-shield]: https://img.shields.io/github/stars/sisimomo/Spring-Filter-Query-Builder.svg?style=for-the-badge
[stars-url]: https://github.com/sisimomo/Spring-Filter-Query-Builder/stargazers
[issues-shield]: https://img.shields.io/github/issues/sisimomo/Spring-Filter-Query-Builder.svg?style=for-the-badge
[issues-url]: https://github.com/sisimomo/Spring-Filter-Query-Builder/issues
[license-shield]: https://img.shields.io/github/license/sisimomo/Spring-Filter-Query-Builder.svg?style=for-the-badge
[license-url]: https://github.com/sisimomo/Spring-Filter-Query-Builder/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/in/simon-vallieres-358555187/
[typescript-shield]: https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white
[npm-shield]: https://img.shields.io/badge/NPM-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white
[jest-shield]: https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge&logo=jest&logoColor=white
[vscode-shield]: https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white
[codesandbox-shield]: https://img.shields.io/badge/Codesandbox-000000?style=for-the-badge&logo=CodeSandbox&logoColor=white