UNPKG

rollun-ts-rql-test

Version:

RQL query object and serializer written in TypeScript

110 lines (92 loc) 3.01 kB
![Coverage badge](https://img.shields.io/badge/Coverage%20Statements-91.42%25-green.svg) ![Coverage badge](https://img.shields.io/badge/Coverage%20Lines-91.25%25-green.svg) ![Coverage badge](https://img.shields.io/badge/Coverage%20Functions-78.98%25-orange.svg) ![Coverage badge](https://img.shields.io/badge/Coverage%20Branches-82.49%25-green.svg) # rollun-ts-rql RQL library written in Typescript. This library contains: * Set of objects that represent RQL nodes * Stringifier that converts object tree into RQL string ## Installation preferred way to install this library is via npm. Run ``` npm install rollun-ts-rql ``` ## Basic usage ```typescript import { QueryStringifier } from 'rollun-ts-rql'; import { Query } from 'rollun-ts-rql'; import { Select } from 'rollun-ts-rql'; import { And } from 'rollun-ts-rql'; import { Eq } from 'rollun-ts-rql'; import { Ge } from 'rollun-ts-rql'; const query = new Query({ select: new Select(['id', 'name', 'age', 'city']), query: new And([ new Eq('name', 'John'), new Ge('age', 18) ]) }); const rqlString = QueryStringifier.stringify(query); console.log(rqlString); // using builder pattern const query = new Query() .addSelect(new Select(['id', 'name', 'age', 'city'])) .addQuery(new And([ new Eq('name', 'John'), new Ge('age', 18) ])) // { // select: new Select(['id', 'name', 'age', 'city']), // query: new And([ // new Eq('name', 'John'), // new Ge('age', 18) // ]) // }); const rqlString = QueryStringifier.stringify(query); console.log(rqlString); //output: select(id,name,age,city)&and(eq(name,John),ge(age,18)) ``` ## Nodes Scalar nodes: * eq - new Eq(<field>,<value>) * ne - new Ne(<field>,<value>) * lt - new Lt(<field>,<value>) * gt - new Gt(<field>,<value>) * le - new Le(<field>,<value>) * ge - new Ge(<field>,<value>) * like - new Like(<field>,<value>) * alike - new Alike(<field>,<value>) Array Nodes * in - new In(<field>,<array of values>) * out - new Out(<field>,<array of values>) Logic operators * and - new And(<array of nodes>) * or - new Or(<array of nodes>) * not - new Not(<array of nodes>) Aggregate nodes * groupby - new GroupBy(<array of values>) ## Query to string QueryStringifier exposes static method `stringify`, that takes a node and returns a string representation of that node ```typescript import { QueryStringifier } from 'rollun-ts-rql'; const rqlString = QueryStringifier.stringify( new Query({ query: new And([ new Eq('status', 'active'), new Eq('age', 33) ]) }) ); console.log(rqlString); //output: and(eq(status,active),eq(age,33)) ``` ## Contributing Before contributing to this lib, make sure you have correct node.js version. It is specified in `.nvmrc` file You can use [NVM](https://github.com/nvm-sh/nvm) to manage node versions. For example, run following command to automatically use correct node version: ```shell nvm use ```