Clojure 使用ragtime回滚所有迁移
我处理的一些代码假设下面的Clojure 使用ragtime回滚所有迁移,clojure,database-migration,rollback,Clojure,Database Migration,Rollback,我处理的一些代码假设下面的rollback函数将回滚所有迁移。然而,它似乎只是在回滚最新的迁移 (defn create-migrator [spec] {:datastore (ragtime.jdbc/sql-database spec) :migrations (ragtime.jdbc/load-resources "migrations")}) (defn rollback [env] (-> (create-db-spec env) (cr
rollback
函数将回滚所有迁移。然而,它似乎只是在回滚最新的迁移
(defn create-migrator
[spec]
{:datastore (ragtime.jdbc/sql-database spec)
:migrations (ragtime.jdbc/load-resources "migrations")})
(defn rollback
[env]
(-> (create-db-spec env)
(create-migrator)
(ragtime.repl/rollback)))
如何更改rollback
以回滚所有迁移?Ragtime接受多个选项。其中有要回滚的迁移数或要回滚到的迁移ID(数量或ID
)
作为ragtime.jdbc/load resources
返回按名称排序的所有迁移的序列(按照惯例,它们将按应用程序的顺序排序),您可以查询第一个迁移并获取其ID:
(-> (ragtime.jdbc/load-resources "migrations")
(first)
(:id))
如果您的数据库是最新的迁移,我想使用迁移的count
作为amount
也应该有效
对于给定的示例:
(defn rollback-all
[env]
(let [spec (create-db-spec env)
migrator (create-migrator spec)
count-migrations (-> migrator :migrations count)]
(ragtime.repl/rollback migrator count-migrations)))
所以使用这些信息,我如何动态回滚所有迁移?有没有办法查询有多少迁移?或者是否有表示时间开始的“迁移id”?请使用迁移id的相关信息增强答案。