Miss any of our Open RFC calls?Watch the recordings here! »

waterline-query-language-parser

0.0.18 • Public • Published

Waterline Query Language Parser

Contenido

Dado que sailsjs provee un blueprint-api. Esta librería aprovecha la ruta find de tal forma genera el querystring where y asi realizar una búsqueda compleja utilizando etiquetas.

El query de busqueda tiene la siguiente forma

etiqueta1: descripcion 1 etiqueta2: descripcion 2

Instalación

npm install waterline-query-language-parser --save

Uso

import Query from "waterline-query-language-parse"
parser = new Query('etiquetas: papel descripcion: papel blando');
 
parser.etiquetas // ['etiquetas', 'descripcion']
parser.descripcion // ['papel', 'papel blando']
 
parser.query // where={"or":[{"etiquetas":{"contains":"papel"}},{"descripcion":{"contains":"papel blando"}}]}

Builder pattern

Ahora puedes añadir mas etiquetas y descripción al query original

import Query from "waterline-query-language-parse"
 
parser = new Query('etiquetas: papel');
 
parser.etiquetas // ['etiquetas']
parser.descripcion // ['papel']
 
parse.addQuery('descripcion: papel blando');
 
parser.etiquetas // ['etiquetas', 'descripcion']
parser.descripcion // ['papel', 'papel blando']
 
parser.query // where={"or":[{"etiquetas":{"contains":"papel"}},{"descripcion":{"contains":"papel blando"}}]}

Modificadores

Tú puedes crear un query de búsqueda con los siguientes modificadores: mayor, menor, mayor que, menor que

  etiqueta:> descripcion  // mayor que
  etiqueta:>= descripcion  // mayor igual
  etiqueta:< descripcion  // menor que
  etiqueta:<= descripcion  // menor igual

Si quieres que sea igual no debes utilizar ningun modificador.

import Query from "waterline-query-language-parse"
 
parser = new Query('pagos:> 100');
parse.addQuery('cuota:<= 15');
 
parser.etiquetas // ['pagos', 'cuota']
parser.descripcion // ['100', '15']
 
parser.query // where={"or":[{"etiquetas":{">":5}},{"cuota":{"<=":15}}]}

Fechas

Tambíen puedes hacer búsqueda de fechas utilizando modificadores descritos anteriormente o por medio de un rango. De esta forma se realiza una búsqueda a partir de una fecha de inicio y fin de fecha.

Formato simple: YYYY/MM/DD

import Query from "waterline-query-language-parse"
 
parser = new Query('fechaInicio:> 2018/06/05');
 
parser.etiquetas // ['fechaInicio']
parser.descripcion // ['2018/06/05']
 
parser.query // where={"or":[{"fechaInicio":{">":"2018-06-05T05:00:00.000Z"}}]}

Formato rango: YYYY/MM/DD-YYYY/MM/DD

import Query from "waterline-query-language-parse"
 
parser = new Query('fechaInicio: 2018/06/05-2018/12/15');
 
parser.etiquetas // ['fechaInicio']
parser.descripcion // ['2018/06/05-2018/12/15']
 
parser.query // where={"or":[{"fechaInicio":{">":"2018-06-05T05:00:00.000Z","<":"2018-12-15T05:00:00.000Z"}}]}

Referencias

Para saber más información sobre el query language de waterline visita query-language

Contribuciones

Ver Guía de contribuciones


Since sailsjs provides a blueprint-api. This library uses the path find to generate the querystring where and thus perform a complex search using tags.

The search query has the following form

tag1: description 1 tag2: description 2

Installation

npm install waterline-query-language-parser --save

Use

import Query from "waterline-query-language-parse"
parser = new Query('etiquetas: papel descripcion: papel blando');
 
parser.etiquetas // ['etiquetas', 'descripcion']
parser.descripcion // ['papel', 'papel blando']
 
parser.query // where={"or":[{"etiquetas":{"contains":"papel"}},{"descripcion":{"contains":"papel blando"}}]}

Builder pattern

Now you can add more tags and description to the original query

import Query from "waterline-query-language-parse"
 
parser = new Query('etiquetas: papel');
 
parser.etiquetas // ['etiquetas']
parser.descripcion // ['papel']
 
parse.addQuery('descripcion: papel blando');
 
parser.etiquetas // ['etiquetas', 'descripcion']
parser.descripcion // ['papel', 'papel blando']
 
parser.query // where={"or":[{"etiquetas":{"contains":"papel"}},{"descripcion":{"contains":"papel blando"}}]}

Modifiers

You can create a search query with the following modifiers: major, minor, greater than, less than

  etiqueta:> descripcion  // greater than
  etiqueta:>= descripcion  // greater than or equal to
  etiqueta:< descripcion  // less than
  etiqueta:<= descripcion  // less than or equal to 

If you want it to be the same you should not use any modifier.

import Query from "waterline-query-language-parse"
 
parser = new Query('pagos:> 100');
parse.addQuery('cuota:<= 15');
 
parser.etiquetas // ['pagos', 'cuota']
parser.descripcion // ['100', '15']
 
parser.query // where={"or":[{"etiquetas":{">":5}},{"cuota":{"<=":15}}]}

Dates

You can also search for dates using modifiers described above or by means of a ** range **. In this way, a search is carried out starting from a start date and ending date.

Simple format: YYYY/MM/DD

import Query from "waterline-query-language-parse"
 
parser = new Query('fechaInicio:> 2018/06/05');
 
parser.etiquetas // ['fechaInicio']
parser.descripcion // ['2018/06/05']
 
parser.query // where={"or":[{"fechaInicio":{">":"2018-06-05T05:00:00.000Z"}}]}

Format range: YYYY/MM/DD-YYYY/MN/DD

import Query from "waterline-query-language-parse"
 
parser = new Query('fechaInicio: 2018/06/05-2018/12/15');
 
parser.etiquetas // ['fechaInicio']
parser.descripcion // ['2018/06/05-2018/12/15']
 
parser.query // where={"or":[{"fechaInicio":{">":"2018-06-05T05:00:00.000Z","<":"2018-12-15T05:00:00.000Z"}}]}

References

To know more information about the query language of waterline visit query-language.

Contributions

See Contributions Guide

Install

npm i waterline-query-language-parser

DownloadsWeekly Downloads

3

Version

0.0.18

License

MIT

Unpacked Size

61.6 kB

Total Files

8

Last publish

Collaborators

  • avatar