mirror of
https://github.com/logseq/logseq.git
synced 2026-05-18 18:02:35 +00:00
fix: remove legacy properties
This commit is contained in:
2
deps/db/src/logseq/db/frontend/schema.cljs
vendored
2
deps/db/src/logseq/db/frontend/schema.cljs
vendored
@@ -30,7 +30,7 @@
|
||||
(map (juxt :major :minor)
|
||||
[(parse-schema-version x) (parse-schema-version y)])))
|
||||
|
||||
(def version (parse-schema-version "65.24"))
|
||||
(def version (parse-schema-version "65.25"))
|
||||
|
||||
(defn major-version
|
||||
"Return a number.
|
||||
|
||||
@@ -34,15 +34,30 @@
|
||||
:block/name (common-util/page-name-sanity-lc (:block/title page))})))
|
||||
pages)))
|
||||
|
||||
(defn remove-block-path-refs
|
||||
[db]
|
||||
(when (d/entity db :block/path-refs)
|
||||
(let [remove-datoms (->> (d/datoms db :avet :block/path-refs)
|
||||
(defn- delete-property
|
||||
[db property-key]
|
||||
(if (d/entity db property-key)
|
||||
(let [remove-datoms (->> (d/datoms db :avet property-key)
|
||||
(map :e)
|
||||
(distinct)
|
||||
(mapv (fn [id]
|
||||
[:db/retract id :block/path-refs])))]
|
||||
(conj remove-datoms [:db/retractEntity :block/path-refs]))))
|
||||
[:db/retract id property-key])))]
|
||||
(conj remove-datoms [:db/retractEntity property-key]))
|
||||
(let [eids (d/q
|
||||
'[:find [?e ...]
|
||||
:in $ ?property-key
|
||||
:where
|
||||
[?e ?property-key ?v]]
|
||||
db
|
||||
property-key)]
|
||||
(map
|
||||
(fn [eid]
|
||||
[:db/retract eid property-key])
|
||||
eids))))
|
||||
|
||||
(defn remove-block-path-refs
|
||||
[db]
|
||||
(delete-property db :block/path-refs))
|
||||
|
||||
(defn- remove-position-property-from-url-properties
|
||||
[db]
|
||||
@@ -80,7 +95,10 @@
|
||||
:logseq.property/deleted-by-ref
|
||||
:logseq.property.recycle/original-parent
|
||||
:logseq.property.recycle/original-page
|
||||
:logseq.property.recycle/original-order]}]])
|
||||
:logseq.property.recycle/original-order]}]
|
||||
["65.25" {:delete-properties [:block/pre-block?
|
||||
:logseq.property.embedding/hnsw-label
|
||||
:logseq.property.embedding/hnsw-label-updated-at]}]])
|
||||
|
||||
(let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first)
|
||||
schema-version->updates)))]
|
||||
@@ -172,7 +190,7 @@
|
||||
|
||||
(defn- upgrade-version!
|
||||
"Return tx-data"
|
||||
[conn version {:keys [properties classes fix] :as migrate-updates}]
|
||||
[conn version {:keys [properties classes fix delete-properties] :as migrate-updates}]
|
||||
(let [version (db-schema/parse-schema-version version)
|
||||
db @conn
|
||||
new-properties (->> (select-keys db-property/built-in-properties properties)
|
||||
@@ -196,7 +214,11 @@
|
||||
{:db/ident db-ident})) new-classes)
|
||||
fixes (when (fn? fix)
|
||||
(fix db))
|
||||
tx-data (concat new-class-idents new-properties new-classes fixes)
|
||||
delete-properties-tx (mapcat
|
||||
(fn [property]
|
||||
(delete-property db property))
|
||||
delete-properties)
|
||||
tx-data (concat new-class-idents new-properties new-classes fixes delete-properties-tx)
|
||||
tx-data' (concat
|
||||
[(sqlite-util/kv :logseq.kv/schema-version version)]
|
||||
tx-data)
|
||||
|
||||
@@ -79,7 +79,8 @@
|
||||
(set/union
|
||||
reverse-data-ignored-attrs
|
||||
rtc-const/ignore-attrs-when-syncing
|
||||
rtc-const/ignore-entities-when-init-upload))
|
||||
rtc-const/ignore-entities-when-init-upload
|
||||
#{:block/pre-block?}))
|
||||
|
||||
(defn- remove-ignored-attrs [tx-data]
|
||||
(remove (fn [d] (contains? rtc-ignored-attrs (:a d))) tx-data))
|
||||
|
||||
@@ -3,7 +3,24 @@
|
||||
[cljs.test :refer [deftest is]]
|
||||
[datascript.core :as d]
|
||||
[frontend.worker.db.migrate :as db-migrate]
|
||||
[logseq.db :as ldb]))
|
||||
[logseq.db :as ldb]
|
||||
[logseq.db.frontend.schema :as db-schema]))
|
||||
|
||||
(defn- entities-with
|
||||
[db attr]
|
||||
(seq
|
||||
(d/q '[:find [?e ...]
|
||||
:in $ ?attr
|
||||
:where
|
||||
[?e ?attr]]
|
||||
db
|
||||
attr)))
|
||||
|
||||
(def ^:private legacy-65-24-schema
|
||||
(merge db-schema/schema
|
||||
{:block/pre-block? {:db/index true}
|
||||
:logseq.property.embedding/hnsw-label {:db/index true}
|
||||
:logseq.property.embedding/hnsw-label-updated-at {:db/index true}}))
|
||||
|
||||
(deftest ensure-built-in-data-exists!
|
||||
(let [db-transit (str (fs-node/readFileSync "src/test/migration/64.8.transit"))
|
||||
@@ -20,3 +37,37 @@
|
||||
(is (= graph-created-at
|
||||
(:kv/value (d/entity @conn :logseq.kv/graph-created-at)))
|
||||
"Graph created at not changed by fn")))
|
||||
|
||||
(deftest migrate-65-25-deletes-legacy-properties
|
||||
(let [conn (d/create-conn legacy-65-24-schema)
|
||||
legacy-block-uuid #uuid "11111111-1111-1111-1111-111111111111"
|
||||
legacy-attrs [:block/pre-block?
|
||||
:logseq.property.embedding/hnsw-label
|
||||
:logseq.property.embedding/hnsw-label-updated-at]]
|
||||
(d/transact! conn
|
||||
[{:db/ident :logseq.kv/schema-version
|
||||
:kv/value {:major 65 :minor 24}}
|
||||
{:db/ident :logseq.property.embedding/hnsw-label
|
||||
:block/uuid #uuid "22222222-2222-2222-2222-222222222222"
|
||||
:block/title "HNSW label"}
|
||||
{:db/ident :logseq.property.embedding/hnsw-label-updated-at
|
||||
:block/uuid #uuid "33333333-3333-3333-3333-333333333333"
|
||||
:block/title "HNSW label updated-at"}
|
||||
{:block/uuid legacy-block-uuid
|
||||
:block/title "legacy block"
|
||||
:block/pre-block? true
|
||||
:logseq.property.embedding/hnsw-label "label"
|
||||
:logseq.property.embedding/hnsw-label-updated-at 123}])
|
||||
(is (every? #(entities-with @conn %) legacy-attrs))
|
||||
(is (some? (d/entity @conn :logseq.property.embedding/hnsw-label)))
|
||||
(is (some? (d/entity @conn :logseq.property.embedding/hnsw-label-updated-at)))
|
||||
|
||||
(db-migrate/migrate conn :target-version {:major 65 :minor 25})
|
||||
|
||||
(is (= {:major 65 :minor 25}
|
||||
(:kv/value (d/entity @conn :logseq.kv/schema-version))))
|
||||
(is (every? #(nil? (entities-with @conn %)) legacy-attrs))
|
||||
(is (nil? (d/entity @conn :logseq.property.embedding/hnsw-label)))
|
||||
(is (nil? (d/entity @conn :logseq.property.embedding/hnsw-label-updated-at)))
|
||||
(is (= "legacy block"
|
||||
(:block/title (d/entity @conn [:block/uuid legacy-block-uuid]))))))
|
||||
|
||||
Reference in New Issue
Block a user