2.1.0 • Published 3 years ago
@ubic/rsql v2.1.0
@ubic/rsql
Утилита для генерации rsql или fiql строки
Установка
Yarn:
yarn add @ubic/rsqlNPM:
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!=5rsql()
.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