|
|
@@ -9,7 +9,8 @@
|
|
|
[frontend.worker.search :as search]
|
|
|
[cljs-bean.core :as bean]
|
|
|
[logseq.db.sqlite.util :as sqlite-util]
|
|
|
- [logseq.common.config :as common-config]))
|
|
|
+ [logseq.common.config :as common-config]
|
|
|
+ [logseq.common.util :as common-util]))
|
|
|
|
|
|
;; TODO: fixes/rollback
|
|
|
|
|
|
@@ -96,6 +97,28 @@
|
|
|
[:db/add id new prop-value]]))))
|
|
|
old-new-props)))
|
|
|
|
|
|
+(defn- rename-properties
|
|
|
+ [props-to-rename]
|
|
|
+ (fn [conn _search-db]
|
|
|
+ (when (ldb/db-based-graph? @conn)
|
|
|
+ (let [props-tx (mapv (fn [[old new]]
|
|
|
+ (merge {:db/id (:db/id (d/entity @conn old))
|
|
|
+ :db/ident new}
|
|
|
+ (when-let [new-title (get-in db-property/built-in-properties [new :title])]
|
|
|
+ {:block/title new-title
|
|
|
+ :block/name (common-util/page-name-sanity-lc new-title)})))
|
|
|
+ props-to-rename)]
|
|
|
+ ;; Property changes need to be in their own tx for subsequent uses of properties to take effect
|
|
|
+ (ldb/transact! conn props-tx {:db-migrate? true})
|
|
|
+
|
|
|
+ (mapcat (fn [[old new]]
|
|
|
+ ;; can't use datoms b/c user properties aren't indexed
|
|
|
+ (->> (d/q '[:find ?b ?prop-v :in $ ?prop :where [?b ?prop ?prop-v]] @conn old)
|
|
|
+ (mapcat (fn [[id prop-value]]
|
|
|
+ [[:db/retract id old]
|
|
|
+ [:db/add id new prop-value]]))))
|
|
|
+ props-to-rename)))))
|
|
|
+
|
|
|
(defn- update-block-type-many->one
|
|
|
[conn _search-db]
|
|
|
(let [db @conn
|
|
|
@@ -276,7 +299,8 @@
|
|
|
[25 {:properties [:logseq.property/query]
|
|
|
:fix add-query-property-to-query-tag}]
|
|
|
[26 {:properties [:logseq.property.node/type]}]
|
|
|
- [27 {:properties [:logseq.property.code/mode]}]])
|
|
|
+ [27 {:properties [:logseq.property.code/mode]}]
|
|
|
+ [28 {:fix (rename-properties {:logseq.property.node/type :logseq.property.node/display-type})}]])
|
|
|
|
|
|
(let [max-schema-version (apply max (map first schema-version->updates))]
|
|
|
(assert (<= db-schema/version max-schema-version))
|