Browse Source

Merge branch 'feat/db' into enhance/plugin-web

charlie 10 months ago
parent
commit
ff0128272a

+ 1 - 1
deps/common/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17"
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18"
   },
   "scripts": {
     "test": "yarn nbb-logseq -cp test -m nextjournal.test-runner"

+ 3 - 3
deps/common/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
deps/db/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17"
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18"
   },
   "dependencies": {
     "better-sqlite3": "9.3.0"

+ 5 - 0
deps/db/src/logseq/db/frontend/class.cljs

@@ -88,6 +88,11 @@
            (when (= (get-in m [:properties :logseq.property/parent]) :logseq.class/Page) class-ident))
          built-in-classes)))
 
+(def page-classes
+  "Built-in classes that behave like a page. Classes should match entity-util/page?"
+  (into #{:logseq.class/Page :logseq.class/Tag :logseq.class/Property}
+        page-children-classes))
+
 (def internal-tags
   "Built-in classes that are hidden on a node and all pages view"
   #{:logseq.class/Page :logseq.class/Property :logseq.class/Tag :logseq.class/Root

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

@@ -133,7 +133,7 @@
   ;; properties in their schema that they depend on
   (let [exceptions-to-block-properties (conj required-properties :block/tags)
         page-class-id (:db/id (d/entity db :logseq.class/Page))
-        private-tag-ids (set (map #(:db/id (d/entity db %)) db-class/private-tags))]
+        all-page-class-ids (set (map #(:db/id (d/entity db %)) db-class/page-classes))]
     (mapv
      (fn [ent]
        (reduce (fn [m [k v]]
@@ -149,7 +149,7 @@
                                    v
                                    (merge (select-keys ent [:logseq.property/built-in?])
                                           {:page-class-id page-class-id
-                                           :private-tag-ids private-tag-ids})]))
+                                           :all-page-class-ids all-page-class-ids})]))
                      (assoc m k v))))
                {}
                ent))
@@ -238,10 +238,10 @@
         true))]
    ;; Ensure use of :logseq.class/Page is consistent and simple. Doing so reduces complexity elsewhere
    ;; and allows for Page to exist as its own public concept later
-   #_[:fn {:error/message "should not have other built-in private tags when tagged with #Page"}
-    (fn [[_k v {:keys [page-class-id private-tag-ids]}]]
+   [:fn {:error/message "should not have other built-in page tags when tagged with #Page"}
+    (fn [[_k v {:keys [page-class-id all-page-class-ids]}]]
       (if (contains? v page-class-id)
-        (empty? (set/intersection (disj v page-class-id) private-tag-ids))
+        (empty? (set/intersection (disj v page-class-id) all-page-class-ids))
         true))]])
 
 (def page-or-block-attrs

+ 3 - 3
deps/db/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
deps/graph-parser/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17",
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18",
     "better-sqlite3": "9.3.0"
   },
   "dependencies": {

+ 13 - 8
deps/graph-parser/src/logseq/graph_parser/exporter.cljs

@@ -201,17 +201,20 @@
                                       ;; Ignore new class tags from extract e.g. :logseq.class/Journal
                                       (logseq-class-ident? %)))
                          (map #(vector :block/uuid (get-page-uuid (:page-names-to-uuids per-file-state) (:block/name %) {:block %})))
-                         set)
-          page-classes (into #{:logseq.class/Page} db-class/page-children-classes)]
+                         set)]
       (cond-> block
         true
         (update :block/tags convert-tags-to-classes db per-file-state user-options all-idents)
-        ;; ensure pages are a Page
         true
         (update :block/tags (fn [tags]
-                              (if (seq (set/intersection (set tags) page-classes))
-                                tags
-                                (conj (vec tags) :logseq.class/Page))))
+                              (cond-> (set tags)
+                                ;; ensure pages at least have a Page
+                                true
+                                (conj :logseq.class/Page)
+                                ;; Remove Page if another Page-like class is already present
+                                (seq (set/intersection (disj (set tags) :logseq.class/Page)
+                                                       db-class/page-classes))
+                                (disj :logseq.class/Page))))
         (seq page-tags)
         (merge {:logseq.property/page-tags page-tags})))
     block))
@@ -1343,8 +1346,10 @@
         ;; uuids to be valid. Also upstream-properties-tx comes after blocks-tx to possibly override blocks
         tx (concat whiteboard-pages pages-index page-properties-tx property-page-properties-tx pages-tx'' classes-tx' blocks-index blocks-tx)
         tx' (common-util/fast-remove-nils tx)
-        ;; _ (prn :tx-counts (map count (vector whiteboard-pages pages-index page-properties-tx property-page-properties-tx pages-tx' classes-tx blocks-index blocks-tx)))
-        ;; _ (when (not (seq whiteboard-pages)) (cljs.pprint/pprint {#_:property-pages-tx #_property-pages-tx :tx tx'}))
+        ;; (prn :tx-counts (map #(vector %1 (count %2))
+        ;;                        [:whiteboard-pages :pages-index :page-properties-tx :property-page-properties-tx :pages-tx' :classes-tx :blocks-index :blocks-tx]
+        ;;                        [whiteboard-pages pages-index page-properties-tx property-page-properties-tx pages-tx' classes-tx blocks-index blocks-tx]))
+        ;; _ (when (not (seq whiteboard-pages)) (cljs.pprint/pprint {#_:property-pages-tx #_property-pages-tx :pages-tx pages-tx :tx tx'}))
         main-tx-report (d/transact! conn tx' {::new-graph? true})
 
         upstream-properties-tx

+ 3 - 3
deps/graph-parser/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
deps/outliner/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17"
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18"
   },
   "dependencies": {
     "better-sqlite3": "9.3.0",

+ 3 - 3
deps/outliner/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
deps/publishing/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17",
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18",
     "mldoc": "^1.5.9"
   },
   "dependencies": {

+ 3 - 3
deps/publishing/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
scripts/package.json

@@ -3,7 +3,7 @@
   "version": "1.0.0",
   "private": true,
   "devDependencies": {
-    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v17"
+    "@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v18"
   },
   "dependencies": {
     "better-sqlite3": "9.3.0",

+ 3 - 3
scripts/yarn.lock

@@ -2,9 +2,9 @@
 # yarn lockfile v1
 
 
-"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v17":
-  version "1.2.173-feat-db-v16"
-  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/f03a95be8a09e13702a0b760be4cba5ad1408819"
+"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v18":
+  version "1.2.173-feat-db-v18"
+  resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/1cd15bf5beb77a1bc5c943a438681cb072eabf2c"
   dependencies:
     import-meta-resolve "^2.1.0"
 

+ 1 - 1
src/main/frontend/background_tasks.cljs

@@ -10,6 +10,6 @@
  (m/reduce
   (fn [_ repo]
     (when (some? repo)
-      (prn :reset-immutable-entities-cache!)
+      ;; (prn :reset-immutable-entities-cache!)
       (entity-plus/reset-immutable-entities-cache!)))
   flows/current-repo-flow))

+ 1 - 2
src/main/frontend/components/editor.cljs

@@ -161,8 +161,7 @@
                                                                 #{:logseq.class/Tag}
                                                                 ;; Page existence here should be the same as entity-util/page?.
                                                                 ;; Don't show 'New page' if a page has any of these tags
-                                                                (into #{:logseq.class/Page :logseq.class/Tag :logseq.class/Property}
-                                                                      db-class/page-children-classes)))
+                                                                db-class/page-classes))
                                            (and db-tag? (some ldb/class? (:block/_alias (db/get-page q)))))
                                      partial-matched-pages
                                      (if db-tag?

+ 3 - 4
src/main/frontend/worker/db/migrate.cljs

@@ -429,7 +429,6 @@
         ;; don't have :block/type indexed
         datoms (->> (d/datoms db :eavt)
                     (filter (fn [d] (= :block/type (:a d)))))
-        journal-entity (d/entity db :logseq.class/Journal)
         tx-data (mapcat (fn [{:keys [e _a v]}]
                           (let [tag (case v
                                       "page" :logseq.class/Page
@@ -445,8 +444,6 @@
                               (some? tag)
                               (conj [:db/add e :block/tags tag])))) datoms)]
     (concat
-     ;; set journal's tag to `#Page`
-     [[:db/add (:db/id journal-entity) :block/tags :logseq.class/Page]]
      tx-data
      (when block-type-entity
        [[:db/retractEntity (:db/id block-type-entity)]]))))
@@ -466,7 +463,9 @@
       (let [e (d/entity db :logseq.task/deadline)
             datoms (d/datoms db :avet :logseq.task/deadline)]
         (concat
-         [[:db/retract (:db/id e) :db/valueType]]
+         [[:db/retract (:db/id e) :db/valueType]
+          {:db/id (:db/id e)
+           :block/schema (assoc (:block/schema e) :type :datetime)}]
          (map
           (fn [d]
             (if-let [day (:block/journal-day (d/entity db (:v d)))]

+ 5 - 2
src/main/frontend/worker/handler/page/db_based/page.cljs

@@ -49,7 +49,9 @@
                         (when (db-property-util/built-in-has-ref-value? k)
                           [k v])))
                 (into {})))]
-      (cond-> [(if class? (db-class/build-new-class db page') page')]
+      (cond-> (if class? [(db-class/build-new-class db page')
+                          [:db/retract [:block/uuid (:block/uuid page)] :block/tags :logseq.class/Page]]
+                  [page'])
         (seq property-vals-tx-m)
         (into (vals property-vals-tx-m))
         true
@@ -187,7 +189,8 @@
                    (not (ldb/class? existing-page))
                    (or (ldb/property? existing-page) (ldb/internal-page? existing-page)))
           ;; Convert existing user property or page to class
-          (let [tx-data (db-class/build-new-class db (select-keys existing-page [:block/title :block/uuid :db/ident :block/created-at]))]
+          (let [tx-data [(db-class/build-new-class db (select-keys existing-page [:block/title :block/uuid :db/ident :block/created-at]))
+                         [:db/retract [:block/uuid (:block/uuid existing-page)] :block/tags :logseq.class/Page]]]
             {:tx-meta tx-meta
              :tx-data tx-data})))
       (let [format    :markdown