Datomic - динамические функции запросов - PullRequest
0 голосов
/ 24 июня 2018

Я был удивлен, что это не сработало:

(d/q '[:find [?e ...]
         :in $ ?field ?op ?value
         :where [?e ?field ?x]
                [(?op ?x ?value)]
         ]
       db
       :my/field
       >
       10))

Если я удаляю op и явно кодирую в> в предложении where, это работает. Могу ли я не использовать входные параметры для обращения к функциям закрытия ядра? Поможет ли правило? Или мне нужно будет создать весь запрос во время выполнения, используя кавычки / unquotinq?

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2018

Попробуйте это:

(defn invoke [f & args] (apply f args))

(d/q '[:find [?e ...]
       :in $ ?field ?op ?value
       :where 
       [?e ?field ?x]
       [(myapp.utils.datomic/invoke ?op ?x ?value)]]
  db :my/field > 10)
...