我在几个项目中使用Datomic,现在是将所有通用代码移动到一个小的实用程序库的时候了。
其中一个挑战是处理共享数据库uri
,大多数操作都依赖它,但必须由使用该库的项目设置。我想知道是否有一种成熟的方法来解决这个问题。以下是我考虑过的一些替代方案:
在库中删除
uri
符号,并将uri添加为访问数据库的每个函数的参数通过
alter-var-root
或类似机制,在init函数中进行更改将其作为库中的动态变量
*uri*
,并在希望小的适配器层中覆盖值,例如:(def my-url ...bla...)
(defn my-fun [args] (with-datomic-uri my-uri (apply library/my-fun args))
将
uri
保留为库中的原子