2016-02-23 38 views
0

我正在處理一些假定下面的rollback函數將回滾所有遷移的代碼。但是,它似乎只是回滾最新的遷移。如何修改rollback以回滾所有遷移?使用ragtime回滾所有遷移

回答

1

Ragtime rollback function接受多個選項。其中有一些要回滾的遷移數或要回滾到的遷移數(amount-or-id)。

由於ragtime.jdbc/load-resources返回按名稱排序的所有遷移的序列(按照慣例,他們會通過自己的應用程序的順序排序),您可查詢第一個和獲取其ID:

(-> (ragtime.jdbc/load-resources "migrations") 
    (first) 
    (:id)) 

如果您數據庫是最新的遷移,我想你的遷移seq使用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))) 
+0

所以......,我該如何動態地回滾所有的遷移?有沒有辦法查詢有多少個遷移?或者是否有代表時間開始的「移民身份證」? –

+0

使用有關遷移ID的相關信息增強了答案。 –

+0

謝謝!那就是訣竅。 –