Я настоятельно рекомендую вам не помещать вашу базу данных в Var. Это очень заманчивая, но довольно вредная, форма взаимодействия окружающей среды.
Рекомендуемый способ пройти к базе данных базы данных в качестве аргумента любой функции необходим доступ к нему в своем теле:
;; BAD
(def db ...)
(defn find-user [user-id]
(run-query find-user-query db user-id))
;; GOOD
(defn find-user [db user-id]
(run-query find-user-query db user-id))
Это не так утомительно, как можно подумать, а выгоды велики (для тестирования, репликации и т. д.).
Примечание:
В первые годы сообщества Clojure, люди используют динамическую Vars, чтобы избежать необходимости добавления параметра все время.
(def ^:dynamic db nil)
(binding [db ...]
(find-user user-id))
Тогда мы научились прекращать это делать :) Составление вашей логики с ее окружением - всего лишь плохая основа для ваших программ.