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的相关信息增强答案。