Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/sisimomo/spring-filter-query-builder
- Owner: sisimomo
- License: mit
- Created: 2021-11-05T20:37:38.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-08-24T21:56:47.000Z (over 1 year ago)
- Last Synced: 2024-05-21T11:45:50.900Z (7 months ago)
- Topics: filter, javascript, query-builder, spring, spring-filter, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/spring-filter-query-builder
- Size: 90.8 KB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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
## 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.
### 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/)## 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).
## 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).
## 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## Contact
[![LinkedIn][linkedin-shield]][linkedin-url]
[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