Привет.
Вопрос про то, как организовать события.
Предположим на фронтенде есть форма с полями и кнопками.
Поля можно редактировать, кнопки нажимать.
Когда снимается фокус с поля, создается событие вроде
{:type :set-attr, :attr :foo/bar, :entity-id 1, :value "some value"}
.
Когда нажимается кнопка -
{:type :add-order-item, :good-id 1, :count 2}
.
При этом нужна проверка прав до отпраления события.
Но данные есть только такие:
{:type :set-attr, :attr :foo/bar}
, {:type :add-order-item}
.
Обработчик изменений полей в большинстве случаев будет одинаковым,
но некоторые поля должны обрабатываться по особому.
Плюс значения полей имеют разные типы: строки, числа, даты и т.п.
Все это можно сделать через паттерн матчинг, но как-то это сложно.
Может быть есть какая-то схема ораганизации подобных событий?
Или core.match и вперед?
Плюс, хочется иметь clojure.spec описание всех типов событий с генераторами.
А почему просто мультиметоды не использовать для диспатчинга?
плюс можно сделать реализацию по умолчанию