@travetto/model-query-language
Version:
Datastore query language.
45 lines (32 loc) • 1.95 kB
Markdown
<!-- This file was generated by @travetto/doc and should not be modified directly -->
<!-- Please modify https://github.com/travetto/travetto/tree/main/module/model-query-language/DOC.tsx and execute "npx trv doc" to rebuild -->
# Data Model Query Language
## Datastore query language.
**Install: @travetto/model-query-language**
```bash
npm install @travetto/model-query-language
# or
yarn add @travetto/model-query-language
```
This module provides a textual query language for the [Data Model Querying](https://github.com/travetto/travetto/tree/main/module/model-query#readme "Datastore abstraction for advanced query support.") interface. The language itself is fairly simple, boolean logic, with parenthetical support.The operators supported are:
## Query Language
* `<`, `<=` - Less than, and less than or equal to
* `>`, `>=` - Greater than, and greater than or equal to
* `!=`, `==` - Not equal to, and equal to
* `~` - Matches regular expression, supports the `i` flag to trigger case insensitive searches
* `!`, `not` - Negates a clause
* `in`, `not-in` - Supports checking if a field is in a list of literal values
* `and`, `&&` - Intersection of clauses
* `or`, `||` - Union of clauses
All sub fields are dot separated for access, e.g. `user.address.city`.A query language version of the previous query could look like:
**Code: Query language with boolean checks and exists check**
```sql
not (age < 35) and contact != null
```
A more complex query would look like:
**Code: Query language with more complex needs**
```sql
user.role in ['admin', 'root'] && (user.address.state == 'VA' || user.address.city == 'Springfield')
```
### Regular Expression
When querying with regular expressions, patterns can be specified as `'strings'` or as `/patterns/`. The latter allows for the case insensitive modifier: `/pattern/i`. Supporting the insensitive flag is up to the underlying model implementation.