клавиши выбора со значением по умолчанию - PullRequest
0 голосов
/ 05 февраля 2019

Есть ли такая функция, как select-keys, но со значениями по умолчанию для отсутствующих ключей?

Причина, по которой я спрашиваю, заключается в том, что я использую korma для запроса базы данных.Я обнаружил ошибку, при которой использование select-keys не является интуитивно понятным, когда нет совпадений.

Пример:

(delete t
  (where
    (select-keys {:k1 "v1" :k2 "v2"} [:k1])))

То же, что и:

(delete t
  (where {:k1 "v1"}))

Что переводится черезкорма что то типа:

delete from t where k1='v1'

Ницца.select-keys создает только карту запроса, которую я хочу.

Но :

(delete t
  (where
    (select-keys {:k2 "v2"} [:k1])))

То же, что:

(delete t
  (where {}))

, которая переводится через кормучто-то вроде:

delete from t

, который удалит всю мою таблицу t: (

Я думал об использовании (merge defaults (select-keys ...)) или создании функции select-keys-with-default, но я чувствовал, что как(get m :blah "default"), вероятно, должно быть что-то встроенное, чего мне не хватает.

Просмотр документов или связанных с ними функций, предлагаемых там, не показал ничего полезного из коробки.

1 Ответ

0 голосов
/ 05 февраля 2019

Возможно, вы вообще не хотите выполнять запрос, когда выбор пуст.Таким образом, что-то вроде этого, вероятно, сделает:

(when-let [selection (not-empty (select-keys ...))]
  (delete t (where selection)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...