Я использую Datomic в нескольких проектах, и пришло время перенести весь общий код в небольшую библиотеку утилит.
Одной из проблем является работа с общей базой данных uri
, от которой зависит большинство операций, но которая должна быть установлена проектом с помощью библиотеки. Интересно, есть ли хорошо зарекомендовавший себя способ сделать это. Вот несколько альтернатив, о которых я думал:
Удаление символа
uri
в библиотеке и добавление uri в качестве аргумента для каждой функции, которая обращается к базе данных.Изменение его с помощью
alter-var-root
или аналогичного механизма в функции инициализацииХранить его в библиотеке как динамическую переменную
*uri*
и переопределять значение в, надеюсь, небольшом слое адаптера, таком как(def my-url...bla...)
(defn my-fun [args] (with-datomic-uri my-uri (применить библиотеку/my-fun args))
Сохранение
uri
как атома в библиотеке