|
|
@@ -661,6 +661,29 @@
|
|
|
[:db/add (:e view-datom) :logseq.property.view/group-by-property block-page-prop-id])
|
|
|
list-views)))
|
|
|
|
|
|
+(defn- cardinality-one-multiple-values
|
|
|
+ [conn _search-db]
|
|
|
+ (let [db @conn
|
|
|
+ attrs (keep (fn [[k v]]
|
|
|
+ (when (and (keyword? k)
|
|
|
+ (not= :db.cardinality/many (:db/cardinality v))
|
|
|
+ (not= :db.cardinality/many (:db/cardinality (d/entity db k)))
|
|
|
+ (or (get db-schema/schema k)
|
|
|
+ (ldb/property? (d/entity db k))))
|
|
|
+ k)) (:schema db))
|
|
|
+ block-ids (map :e (d/datoms db :avet :block/uuid))]
|
|
|
+ (->>
|
|
|
+ (mapcat
|
|
|
+ (fn [id]
|
|
|
+ (mapcat (fn [attr]
|
|
|
+ (let [datoms (d/datoms db :eavt id attr)]
|
|
|
+ (when (> (count datoms) 1)
|
|
|
+ (map (fn [datom]
|
|
|
+ [:db/retract (:e datom) (:a datom) (:v datom)])
|
|
|
+ (butlast datoms))))) attrs))
|
|
|
+ block-ids)
|
|
|
+ (remove nil?))))
|
|
|
+
|
|
|
(def ^:large-vars/cleanup-todo schema-version->updates
|
|
|
"A vec of tuples defining datascript migrations. Each tuple consists of the
|
|
|
schema version integer and a migration map. A migration map can have keys of :properties, :classes
|
|
|
@@ -769,7 +792,8 @@
|
|
|
["64.3" {:properties [:logseq.property/used-template :logseq.property/template-applied-to]
|
|
|
:classes [:logseq.class/Template]}]
|
|
|
["64.4" {:properties [:logseq.property/created-by-ref]}]
|
|
|
- ["64.5" {:fix add-group-by-property-for-list-views}]])
|
|
|
+ ["64.5" {:fix add-group-by-property-for-list-views}]
|
|
|
+ ["64.6" {:fix cardinality-one-multiple-values}]])
|
|
|
|
|
|
(let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first)
|
|
|
schema-version->updates)))
|