Ver Fonte

refactor: block type predicate fns belong in util ns

block type checks are used in more places than property types
and belong in a lower level util ns
Gabriel Horner há 1 ano atrás
pai
commit
83c8b968e4

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

@@ -88,13 +88,13 @@
              (prn :debug-tx-data tx-data)
              (prn :debug-tx-data tx-data)
              (throw e))))))))
              (throw e))))))))
 
 
-(def page? sqlite-util/page?)
-(def class? sqlite-util/class?)
-(def property? sqlite-util/property?)
-(def closed-value? sqlite-util/closed-value?)
-(def whiteboard? sqlite-util/whiteboard?)
-(def journal? sqlite-util/journal?)
-(def hidden? sqlite-util/hidden?)
+(def page? entity-util/page?)
+(def class? entity-util/class?)
+(def property? entity-util/property?)
+(def closed-value? entity-util/closed-value?)
+(def whiteboard? entity-util/whiteboard?)
+(def journal? entity-util/journal?)
+(def hidden? entity-util/hidden?)
 (def public-built-in-property? db-property/public-built-in-property?)
 (def public-built-in-property? db-property/public-built-in-property?)
 
 
 (defn sort-by-order
 (defn sort-by-order

+ 1 - 2
deps/db/src/logseq/db/frontend/delete_blocks.cljs

@@ -6,7 +6,6 @@
             [datascript.core :as d]
             [datascript.core :as d]
             [clojure.string :as string]
             [clojure.string :as string]
             [logseq.db.frontend.entity-util :as entity-util]
             [logseq.db.frontend.entity-util :as entity-util]
-            [logseq.db.sqlite.util :as sqlite-util]
             [logseq.db.frontend.content :as db-content]))
             [logseq.db.frontend.content :as db-content]))
 
 
 (defn- build-retracted-tx [retracted-blocks]
 (defn- build-retracted-tx [retracted-blocks]
@@ -46,7 +45,7 @@
                                                     (contains? #{:db.fn/retractEntity :db/retractEntity} (first tx)))
                                                     (contains? #{:db.fn/retractEntity :db/retractEntity} (first tx)))
                                            (second tx))) txs)
                                            (second tx))) txs)
                                  (filter (fn [id]
                                  (filter (fn [id]
-                                           (not (sqlite-util/page? (d/entity db id))))))]
+                                           (not (entity-util/page? (d/entity db id))))))]
     (when (seq retracted-block-ids)
     (when (seq retracted-block-ids)
       (let [retracted-blocks (map #(d/entity db %) retracted-block-ids)
       (let [retracted-blocks (map #(d/entity db %) retracted-block-ids)
             retracted-tx (build-retracted-tx retracted-blocks)
             retracted-tx (build-retracted-tx retracted-blocks)

+ 39 - 2
deps/db/src/logseq/db/frontend/entity_util.cljs

@@ -1,9 +1,46 @@
 (ns logseq.db.frontend.entity-util
 (ns logseq.db.frontend.entity-util
   "Lower level entity util fns used across db namespaces"
   "Lower level entity util fns used across db namespaces"
-  (:require [datascript.core :as d]))
+  (:require [datascript.core :as d]
+            [clojure.string :as string]
+            [logseq.common.config :as common-config]))
 
 
 (defn db-based-graph?
 (defn db-based-graph?
   "Whether the current graph is db-only"
   "Whether the current graph is db-only"
   [db]
   [db]
   (when db
   (when db
-    (= "db" (:kv/value (d/entity db :logseq.kv/db-type)))))
+    (= "db" (:kv/value (d/entity db :logseq.kv/db-type)))))
+
+(defn page?
+  [block]
+  (contains? #{"page" "journal" "whiteboard" "class" "property" "hidden"}
+             (:block/type block)))
+
+(defn class?
+  [entity]
+  (= (:block/type entity) "class"))
+
+(defn property?
+  [entity]
+  (= (:block/type entity) "property"))
+
+(defn closed-value?
+  [entity]
+  (= (:block/type entity) "closed value"))
+
+(defn whiteboard?
+  "Given a page entity or map, check if it is a whiteboard page"
+  [page]
+  (= (:block/type page) "whiteboard"))
+
+(defn journal?
+  "Given a page entity or map, check if it is a journal page"
+  [page]
+  (= (:block/type page) "journal"))
+
+(defn hidden?
+  [page]
+  (when page
+    (if (string? page)
+      (or (string/starts-with? page "$$$")
+          (= common-config/favorites-page-name page))
+      (= (:block/type page) "hidden"))))

+ 6 - 6
deps/db/src/logseq/db/frontend/malli_schema.cljs

@@ -7,7 +7,7 @@
             [datascript.core :as d]
             [datascript.core :as d]
             [logseq.db.frontend.property :as db-property]
             [logseq.db.frontend.property :as db-property]
             [logseq.db.frontend.entity-plus :as entity-plus]
             [logseq.db.frontend.entity-plus :as entity-plus]
-            [logseq.db.sqlite.util :as sqlite-util]
+            [logseq.db.frontend.entity-util :as entity-util]
             [logseq.db.frontend.order :as db-order]))
             [logseq.db.frontend.order :as db-order]))
 
 
 ;; :db/ident malli schemas
 ;; :db/ident malli schemas
@@ -421,15 +421,15 @@
   (into
   (into
    [:multi {:dispatch (fn [d]
    [:multi {:dispatch (fn [d]
                         (cond
                         (cond
-                          (sqlite-util/property? d)
+                          (entity-util/property? d)
                           :property
                           :property
-                          (sqlite-util/class? d)
+                          (entity-util/class? d)
                           :class
                           :class
-                          (sqlite-util/hidden? d)
+                          (entity-util/hidden? d)
                           :hidden
                           :hidden
-                          (sqlite-util/whiteboard? d)
+                          (entity-util/whiteboard? d)
                           :normal-page
                           :normal-page
-                          (sqlite-util/page? d)
+                          (entity-util/page? d)
                           :normal-page
                           :normal-page
                           (:file/path d)
                           (:file/path d)
                           :file-block
                           :file-block

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

@@ -18,7 +18,7 @@
      * :hide? - Boolean which hides property when set on a block or exported e.g. slides
      * :hide? - Boolean which hides property when set on a block or exported e.g. slides
      * :public? - Boolean which allows property to be used by user e.g. add and remove property to blocks/pages
      * :public? - Boolean which allows property to be used by user e.g. add and remove property to blocks/pages
      * :view-context - Keyword to indicate which view contexts a property can be
      * :view-context - Keyword to indicate which view contexts a property can be
-       seen in when :public? is set. Valid values are :page and :block. Property can
+       seen in when :public? is set. Valid values are :page, :block and :class. Property can
        be viewed in any context if not set
        be viewed in any context if not set
    * :title - Property's :block/title
    * :title - Property's :block/title
    * :name - Property's :block/name as a keyword. If none given, one is derived from the db/ident
    * :name - Property's :block/name as a keyword. If none given, one is derived from the db/ident

+ 4 - 40
deps/db/src/logseq/db/frontend/property/type.cljs

@@ -4,8 +4,7 @@
   (:require [datascript.core :as d]
   (:require [datascript.core :as d]
             [clojure.set :as set]
             [clojure.set :as set]
             [logseq.common.util.macro :as macro-util]
             [logseq.common.util.macro :as macro-util]
-            [clojure.string :as string]
-            [logseq.common.config :as common-config]))
+            [logseq.db.frontend.entity-util :as entity-util]))
 
 
 ;; Config vars
 ;; Config vars
 ;; ===========
 ;; ===========
@@ -89,52 +88,17 @@
   [db id]
   [db id]
   (some? (d/entity db id)))
   (some? (d/entity db id)))
 
 
-(defn page?
-  [block]
-  (contains? #{"page" "journal" "whiteboard" "class" "property" "hidden"}
-             (:block/type block)))
-
-(defn class?
-  [entity]
-  (= (:block/type entity) "class"))
-
-(defn property?
-  [entity]
-  (= (:block/type entity) "property"))
-
-(defn closed-value?
-  [entity]
-  (= (:block/type entity) "closed value"))
-
-(defn whiteboard?
-  "Given a page entity or map, check if it is a whiteboard page"
-  [page]
-  (= (:block/type page) "whiteboard"))
-
-(defn journal?
-  "Given a page entity or map, check if it is a journal page"
-  [page]
-  (= (:block/type page) "journal"))
-
-(defn hidden?
-  [page]
-  (when page
-    (if (string? page)
-      (or (string/starts-with? page "$$$")
-          (= common-config/favorites-page-name page))
-      (= (:block/type page) "hidden"))))
-
 (defn- class-entity?
 (defn- class-entity?
   [db id]
   [db id]
-  (class? (d/entity db id)))
+  (entity-util/class? (d/entity db id)))
 
 
 (defn- property-entity?
 (defn- property-entity?
   [db id]
   [db id]
-  (property? (d/entity db id)))
+  (entity-util/property? (d/entity db id)))
 
 
 (defn- page-entity?
 (defn- page-entity?
   [db id]
   [db id]
-  (page? (d/entity db id)))
+  (entity-util/page? (d/entity db id)))
 
 
 (defn- number-entity?
 (defn- number-entity?
   [db id-or-value {:keys [new-closed-value?]}]
   [db id-or-value {:keys [new-closed-value?]}]

+ 4 - 4
deps/db/src/logseq/db/sqlite/common_db.cljs

@@ -28,7 +28,7 @@
   (->> (d/datoms db :avet :block/title page-name)
   (->> (d/datoms db :avet :block/title page-name)
        (filter (fn [d]
        (filter (fn [d]
                  (let [e (d/entity db (:e d))]
                  (let [e (d/entity db (:e d))]
-                   (or (sqlite-util/page? e) (:block/tags e)))))
+                   (or (entity-util/page? e) (:block/tags e)))))
        (map :e)
        (map :e)
        sort
        sort
        first))
        first))
@@ -92,7 +92,7 @@
                                      (map? (first property-values)))
                                      (map? (first property-values)))
                               property-values
                               property-values
                               #{property-values})
                               #{property-values})
-                            (remove sqlite-util/page?))
+                            (remove entity-util/page?))
                     value-ids (when (every? map? values)
                     value-ids (when (every? map? values)
                                 (->> (map :db/id values)
                                 (->> (map :db/id values)
                                      (filter (fn [id] (or (int? id) (keyword? id))))))
                                      (filter (fn [id] (or (int? id) (keyword? id))))))
@@ -141,9 +141,9 @@
   (let [block (d/entity db (if (uuid? id)
   (let [block (d/entity db (if (uuid? id)
                              [:block/uuid id]
                              [:block/uuid id]
                              id))
                              id))
-        page? (sqlite-util/page? block)
+        page? (entity-util/page? block)
         get-children (fn [block children]
         get-children (fn [block children]
-                       (let [long-page? (and (> (count children) 500) (not (sqlite-util/whiteboard? block)))]
+                       (let [long-page? (and (> (count children) 500) (not (entity-util/whiteboard? block)))]
                          (if long-page?
                          (if long-page?
                            (->> (map (fn [e]
                            (->> (map (fn [e]
                                        (select-keys e [:db/id :block/uuid :block/page :block/order :block/parent :block/collapsed? :block/link]))
                                        (select-keys e [:db/id :block/uuid :block/page :block/order :block/parent :block/collapsed? :block/link]))

+ 1 - 9
deps/db/src/logseq/db/sqlite/util.cljs

@@ -126,12 +126,4 @@
     :block/title page-name
     :block/title page-name
     :block/uuid (d/squuid)
     :block/uuid (d/squuid)
     :block/format :markdown
     :block/format :markdown
-    :block/type "page"}))
-
-(def page? db-property-type/page?)
-(def class? db-property-type/class?)
-(def property? db-property-type/property?)
-(def closed-value? db-property-type/closed-value?)
-(def whiteboard? db-property-type/whiteboard?)
-(def journal? db-property-type/journal?)
-(def hidden? db-property-type/hidden?)
+    :block/type "page"}))