UNPKG

@travetto/model-query-language

Version:

Datastore query language.

45 lines (32 loc) 1.95 kB
<!-- 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.