Browse Source

fix: db lint

also move class fn to db-class
Gabriel Horner 4 tháng trước cách đây
mục cha
commit
a1967ef748

+ 1 - 1
deps/db/src/logseq/db.cljs

@@ -522,7 +522,7 @@
   (when db (get-key-value db :logseq.kv/remote-schema-version)))
 
 (def get-all-properties db-db/get-all-properties)
-(def get-class-extends db-db/get-class-extends)
+(def get-class-extends db-class/get-class-extends)
 (def get-classes-parents db-db/get-classes-parents)
 (def get-title-with-parents db-db/get-title-with-parents)
 (def class-instance? db-db/class-instance?)

+ 21 - 2
deps/db/src/logseq/db/frontend/class.cljs

@@ -3,6 +3,7 @@
   (:require [clojure.set :as set]
             [clojure.string :as string]
             [datascript.core :as d]
+            [datascript.impl.entity :as de]
             [flatland.ordered.map :refer [ordered-map]]
             [logseq.common.defkeywords :refer [defkeywords]]
             [logseq.db.frontend.db-ident :as db-ident]
@@ -118,7 +119,10 @@
   "Built-in classes that are hidden in a few contexts like property values"
   #{:logseq.class/Page :logseq.class/Root :logseq.class/Asset})
 
+;; Helper fns
+;; ==========
 (defn get-structured-children
+  "Returns all children of a class"
   [db eid]
   (->>
    (d/q '[:find [?c ...]
@@ -130,8 +134,23 @@
         (:class-extends rules/rules))
    (remove #{eid})))
 
-;; Helper fns
-;; ==========
+(defn get-class-extends
+  "Returns all parents of a class"
+  [node]
+  (assert (de/entity? node) "get-class-extends `node` should be an entity")
+  (let [db (.-db node)
+        eid (:db/id node)]
+    (->>
+     (d/q '[:find [?p ...]
+            :in $ ?c %
+            :where
+            (class-extends ?p ?c)]
+          db
+          eid
+          (:class-extends rules/rules))
+     (remove #{eid})
+     (map (fn [id] (d/entity db id))))))
+
 
 (defn create-user-class-ident-from-name
   "Creates a class :db/ident for a default user namespace.

+ 3 - 22
deps/db/src/logseq/db/frontend/db.cljs

@@ -3,14 +3,12 @@
   (:require [clojure.set :as set]
             [clojure.string :as string]
             [datascript.core :as d]
-            [datascript.impl.entity :as de]
             [logseq.common.config :as common-config]
             [logseq.common.util.namespace :as ns-util]
             [logseq.common.util.page-ref :as page-ref]
             [logseq.db.frontend.class :as db-class]
             [logseq.db.frontend.entity-util :as entity-util]
-            [logseq.db.frontend.property :as db-property]
-            [logseq.db.frontend.rules :as rules]))
+            [logseq.db.frontend.property :as db-property]))
 
 (defn built-in-class-property?
   "Whether property a built-in property for the specific class"
@@ -45,23 +43,6 @@
   (->> (d/datoms db :avet :block/tags :logseq.class/Property)
        (map (fn [d] (d/entity db (:e d))))))
 
-(defn get-class-extends
-  "Returns all parents of a class"
-  [node]
-  (assert (de/entity? node) "get-class-extends `node` should be an entity")
-  (let [db (.-db node)
-        eid (:db/id node)]
-    (->>
-     (d/q '[:find [?p ...]
-            :in $ ?c %
-            :where
-            (class-extends ?p ?c)]
-          db
-          eid
-          (:class-extends rules/rules))
-     (remove #{eid})
-     (map (fn [id] (d/entity db id))))))
-
 (defn get-page-parents
   [node]
   (when-let [parent (:block/parent node)]
@@ -75,7 +56,7 @@
 
 (defn- get-class-title-with-extends
   [entity]
-  (let [parents' (->> (get-class-extends entity)
+  (let [parents' (->> (db-class/get-class-extends entity)
                       (remove (fn [e] (= :logseq.class/Root (:db/ident e))))
                       vec)]
     (string/join
@@ -103,7 +84,7 @@
   "Returns all parents of all classes. Like get-class-extends but for multiple classes"
   [tags]
   (let [tags' (filter entity-util/class? tags)
-        result (mapcat get-class-extends tags')]
+        result (mapcat db-class/get-class-extends tags')]
     (set result)))
 
 (defn class-instance?

+ 16 - 14
deps/db/src/logseq/db/sqlite/build.cljs

@@ -247,6 +247,18 @@
                                    properties'))]
     new-properties-tx))
 
+(defn- build-class-extends [{:build/keys [class-parent class-extends]} class-db-ids]
+  (when-let [class-extends' (if class-parent
+                              (do (println "Warning: :build/class-parent is deprecated and will be removed soon.")
+                                  [class-parent])
+                              class-extends)]
+    (mapv (fn [c]
+            (or (class-db-ids c)
+                (if (db-malli-schema/class? c)
+                  c
+                  (throw (ex-info (str "No :db/id for " c) {})))))
+          class-extends')))
+
 (defn- build-classes-tx [classes properties-config uuid-maps all-idents {:keys [build-existing-tx?] :as options}]
   (let [classes' (if build-existing-tx?
                    (->> classes
@@ -258,12 +270,8 @@
                           (into {}))
         classes-tx (vec
                     (mapcat
-                     (fn [[class-name {:build/keys [class-parent class-extends class-properties] :as class-m}]]
-                       (let [class-extends' (if class-parent
-                                              (do (println "Warning: :build/class-parent is deprecated and will be removed soon.")
-                                                  [class-parent])
-                                              class-extends)
-                             db-ident (get-ident all-idents class-name)
+                     (fn [[class-name {:build/keys [class-properties] :as class-m}]]
+                       (let [db-ident (get-ident all-idents class-name)
                              new-block
                              (sqlite-util/build-new-class
                               {:block/name (common-util/page-name-sanity-lc (name class-name))
@@ -285,14 +293,8 @@
                              (when-let [props (not-empty (:build/properties class-m))]
                                (->block-properties (merge props (db-property-build/build-properties-with-ref-values pvalue-tx-m))
                                                    uuid-maps all-idents options))
-                             (when class-extends'
-                               {:logseq.property.class/extends
-                                (mapv (fn [c]
-                                        (or (class-db-ids c)
-                                            (if (db-malli-schema/class? c)
-                                              c
-                                              (throw (ex-info (str "No :db/id for " c) {})))))
-                                      class-extends')})
+                             (when-let [class-extends (build-class-extends class-m class-db-ids)]
+                               {:logseq.property.class/extends class-extends})
                              (when class-properties
                                {:logseq.property.class/properties
                                 (mapv #(hash-map :db/ident (get-ident all-idents %))