Задать вопрос
@ber_enot
Веб-разработчик, Vue.js / Node.js

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

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

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

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

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

На бэкэнде - Node.js.
Спасибо.
  • Вопрос задан
  • 905 просмотров
Подписаться 5 Простой Комментировать
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
25 дек. 2024, в 08:00
20000 руб./за проект
25 дек. 2024, в 07:53
20000 руб./за проект
25 дек. 2024, в 07:45
20000 руб./за проект