2.1.0 • Published 2 years ago

@ubic/rsql v2.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

@ubic/rsql

Утилита для генерации rsql или fiql строки

Установка

Yarn:

yarn add @ubic/rsql

NPM:

npm install @ubic/rsql

Инициализация

import { Rsql } from '@ubic/rsql'

const rsql = function rsql(initState?: string) {
  return new Rsql({ initState });
};

В контейнер класса Rsql() можно передать необязатель аргумент:

{
  initState?: string // строка с начальным состоянием 
  format?: Format = 'rsql' // формат (rsql или fiql) для работы методов
}

Доступные методы

.eq(key, value) // -> key==value
.notEq(key, value) // -> key!=value
.lt(key, value) // -> rsql: key<value, fiql: key=lt=value
.le(key, value) // -> rsql: key<=value, fiql: key=le=value
.gt(key, value) // -> rsql: key>value, fiql: key=gt=value
.ge(key, value) // -> rsql: key>=value, fiql: key=ge=value
.in(key, arr) // -> key=in=(arr join by ',')
.out(key, arr) // -> key=out=(arr join by ',')
.exists(key) // -> key=ex=true
.notExists(key) // -> key=ex=false
.re(key, value) // -> key=re=value
.group(value) // -> (value)
.and() // -> rsql: ' and ', fiql: ';'
.or() // -> rsql: ' or ', fiql: ','
.and(value) // -> rsql: ' and (value)', fiql: ';(value)'
.or(value) // -> rsql: ' or (value)', fiql: ',(value)'

Логические методы .and() и .or() имеют второй аругмент, позволяющий скрыть или показать элемент:

.and(value, { skip: true }) // ''
.or(value, { skip: true }) // ''

Для корректной работы библиотеки важно в конце выражений вызывать метод .toString()

rsql().someMethod().toString()

Примеры

rsql()
  .eq('a', 3)
  .notEq('b', 5)
  .toString() // -> a==3 and b!=5
rsql()
  .eq('c', 'qwerty')
  .or()
  .notEq('b', 5)
  .or(
    rsql()
      .re('fd', 'wer')
      .eq('z', 8)
  )
  .toString() // -> c==qwerty or b!=5 or (fd=re=wer and z==8),

Расширение функциональности

Для удобства использования можно создать свои методы, создав класс наследумый от Rsql

class NewRsql extends Rsql {
  public newMethod() {
    this.state = 'this is new method';
    return this;
  }
}

const rsql = function rsql() {
  return new NewRsql();
};

rsql().newMethod().toString() // -> this is new method
2.1.0

2 years ago

2.0.0

2 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.1.0

3 years ago