@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