浏览代码

spike: properties and classes work without :block/name

* db tests pass
* new graph created
* can use class and property on blocks and with each other
* can nav to class and property pages fine
* can use and query all property types on blocks and pages
Gabriel Horner 5 月之前
父节点
当前提交
94abe924b0

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

@@ -286,7 +286,7 @@
    (concat
    (concat
     [:map
     [:map
      [:db/ident class-ident]]
      [:db/ident class-ident]]
-    page-attrs
+    (remove #(= :block/name (first %)) page-attrs)
     page-or-block-attrs)))
     page-or-block-attrs)))
 
 
 (def property-common-schema-attrs
 (def property-common-schema-attrs
@@ -305,7 +305,7 @@
      [:logseq.property/view-context {:optional true} [:enum :page :block :class :property :never]]]
      [:logseq.property/view-context {:optional true} [:enum :page :block :class :property :never]]]
     property-common-schema-attrs
     property-common-schema-attrs
     property-attrs
     property-attrs
-    page-attrs
+    (remove #(= :block/name (first %)) page-attrs)
     page-or-block-attrs)))
     page-or-block-attrs)))
 
 
 (def user-property
 (def user-property
@@ -317,7 +317,7 @@
      [:logseq.property/type (apply vector :enum db-property-type/user-built-in-property-types)]]
      [:logseq.property/type (apply vector :enum db-property-type/user-built-in-property-types)]]
     property-common-schema-attrs
     property-common-schema-attrs
     property-attrs
     property-attrs
-    page-attrs
+    (remove #(= :block/name (first %)) page-attrs)
     page-or-block-attrs)))
     page-or-block-attrs)))
 
 
 (def property-page
 (def property-page

+ 1 - 2
deps/db/src/logseq/db/sqlite/build.cljs

@@ -261,8 +261,7 @@
                        (let [db-ident (get-ident all-idents class-name)
                        (let [db-ident (get-ident all-idents class-name)
                              new-block
                              new-block
                              (sqlite-util/build-new-class
                              (sqlite-util/build-new-class
-                              {:block/name (common-util/page-name-sanity-lc (name class-name))
-                               :block/title (name class-name)
+                              {:block/title (name class-name)
                                :block/uuid (or (:block/uuid class-m)
                                :block/uuid (or (:block/uuid class-m)
                                                (common-uuid/gen-uuid :db-ident-block-uuid db-ident))
                                                (common-uuid/gen-uuid :db-ident-block-uuid db-ident))
                                :db/ident db-ident
                                :db/ident db-ident

+ 0 - 1
deps/db/src/logseq/db/sqlite/create_graph.cljs

@@ -156,7 +156,6 @@
                                  (:properties schema))]
                                  (:properties schema))]
            (cond->
            (cond->
             {:block/title title'
             {:block/title title'
-             :block/name (common-util/page-name-sanity-lc title')
              :db/ident db-ident
              :db/ident db-ident
              :block/uuid (common-uuid/gen-uuid :db-ident-block-uuid db-ident)}
              :block/uuid (common-uuid/gen-uuid :db-ident-block-uuid db-ident)}
              (seq class-properties)
              (seq class-properties)

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

@@ -78,7 +78,6 @@
         {:db/ident db-ident'
         {:db/ident db-ident'
          :block/tags #{:logseq.class/Property}
          :block/tags #{:logseq.class/Property}
          :logseq.property/type prop-type
          :logseq.property/type prop-type
-         :block/name (common-util/page-name-sanity-lc (name prop-name))
          :block/uuid (or block-uuid (common-uuid/gen-uuid :db-ident-block-uuid db-ident'))
          :block/uuid (or block-uuid (common-uuid/gen-uuid :db-ident-block-uuid db-ident'))
          :block/title (name prop-name)
          :block/title (name prop-name)
          :db/index true
          :db/index true

+ 1 - 1
deps/graph-parser/src/logseq/graph_parser/block.cljs

@@ -357,7 +357,7 @@
                   (not db-based?)
                   (not db-based?)
                   (assoc :block/type "journal"))
                   (assoc :block/type "journal"))
                 {}))]
                 {}))]
-    [page page-entity]))
+    [(cond-> page (and db-based? class?) (dissoc :block/name)) page-entity]))
 
 
 (defn sanitize-hashtag-name
 (defn sanitize-hashtag-name
   "This must be kept in sync with its reverse operation in logseq.db.frontend.content"
   "This must be kept in sync with its reverse operation in logseq.db.frontend.content"

+ 10 - 7
src/main/frontend/components/page.cljs

@@ -44,6 +44,7 @@
             [logseq.common.util :as common-util]
             [logseq.common.util :as common-util]
             [logseq.common.util.page-ref :as page-ref]
             [logseq.common.util.page-ref :as page-ref]
             [logseq.db :as ldb]
             [logseq.db :as ldb]
+            [logseq.db.frontend.entity-util :as entity-util]
             [logseq.graph-parser.mldoc :as gp-mldoc]
             [logseq.graph-parser.mldoc :as gp-mldoc]
             [logseq.shui.hooks :as hooks]
             [logseq.shui.hooks :as hooks]
             [logseq.shui.ui :as shui]
             [logseq.shui.ui :as shui]
@@ -192,13 +193,15 @@
 (rum/defcs page-blocks-cp < rum/reactive db-mixins/query
 (rum/defcs page-blocks-cp < rum/reactive db-mixins/query
   {:will-mount (fn [state]
   {:will-mount (fn [state]
                  (when-not (config/db-based-graph?)
                  (when-not (config/db-based-graph?)
-                  (let [page-e (first (:rum/args state))
-                        page-name (:block/name page-e)]
-                    (when (and page-name
-                               (db/journal-page? page-name)
-                               (>= (date/journal-title->int page-name)
-                                   (date/journal-title->int (date/today))))
-                      (state/pub-event! [:journal/insert-template page-name]))))
+                   (let [page-e (first (:rum/args state))
+                         page-name (or (:block/name page-e)
+                                       (when (or (entity-util/class? page-e) (entity-util/property? page-e))
+                                         (:block/title page-e)))]
+                     (when (and page-name
+                                (db/journal-page? page-name)
+                                (>= (date/journal-title->int page-name)
+                                    (date/journal-title->int (date/today))))
+                       (state/pub-event! [:journal/insert-template page-name]))))
                  state)}
                  state)}
   [state block* {:keys [sidebar? whiteboard?] :as config}]
   [state block* {:keys [sidebar? whiteboard?] :as config}]
   (when-let [id (:db/id block*)]
   (when-let [id (:db/id block*)]