@ber_enot
Веб-разработчик, Vue.js / Node.js

Как реализовать визуальный конструктор фильтра/алгоритма?

Стоит задача сделать конструктор акций на сайте.
Администратор может добавлять несколько условий, например:
"Если в корзине следующие продукты:", "Если сумма покупки", "больше", "меньше" и т.п.

В качестве примера приведу правила обработки писем в Яндекс.Почте:
5c0d757e75e23064276111.png

Если с фронтэндом все понятно, то как эти условия хранить в БД, и, самое главное, "запускать" их?
Как преобразовать "Если в корзине следующие продукты: (Товар 1 И Товар2) ИЛИ (Товар 3 И Товар 4)" в код?

Как вообще называются подобные "конструкторы"? В гугле ничего подобного найти не смог..

На бэкэнде - Node.js.
Спасибо.
  • Вопрос задан
  • 880 просмотров
Решения вопроса 1
usdglander
@usdglander
Yipee-ki-yay
Вставлю свои 5 копеек, так как в настоящий момент примерно над этим сейчас и работаю. Моё решение следующее:
Хранить этот фильтр в виде формализованного набора правил для построения запроса. Что то вроде
[
    'OR'
    ['like', 'from', '%example%'],
    ['=', 'theme', 'hello'],
    ['like', 'body', 'world']
]

Затем "скармливаю" этот массив в объект ConditionDispatcher, который в зависимости от типа указанного в нём "провайдера" (потребителя) преобразует этот набор правил либо в where-секцию MySQL запроса, либо в запрос в MongoDb, либо в код функции, выполняющей фильтрацию на стороне браузера (javascript).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Сгенерировать сразу sql запрос и хранить его строкой. Если таких запросов не очень много, можно использовать не строку с запросом, а создать хранимую процедуру в базе.

Логические условия тривиально преобразуются в sql.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 12:53
1000 руб./за проект
19 апр. 2024, в 12:41
8000 руб./за проект
19 апр. 2024, в 12:05
1500 руб./в час