Pārlūkot izejas kodu

Reuse starting db conn

Also move circular dep hack to ns that both nbb and cljs can use
Gabriel Horner 3 gadi atpakaļ
vecāks
revīzija
89d73bc178

+ 3 - 13
src/main/frontend/db/conn.cljs

@@ -1,13 +1,12 @@
 (ns frontend.db.conn
   "Contains db connections."
   (:require [clojure.string :as string]
-            [frontend.db-schema :as db-schema]
-            [frontend.db.default :as default-db]
             [frontend.util :as util]
             [frontend.mobile.util :as mobile-util]
             [frontend.state :as state]
             [frontend.config :as config]
             [logseq.graph-parser.text :as text]
+            [logseq.graph-parser.db :as gp-db]
             [logseq.graph-parser.util :as gp-util]
             [datascript.core :as d]))
 
@@ -77,21 +76,12 @@
 (defn start!
   ([me repo]
    (start! me repo {}))
-  ([me repo {:keys [db-type listen-handler]}]
+  ([me repo {:keys [listen-handler]}]
    (let [db-name (datascript-db repo)
-         db-conn (d/create-conn db-schema/schema)]
+         db-conn (gp-db/start-conn)]
      (swap! conns assoc db-name db-conn)
-     (d/transact! db-conn [(cond-> {:schema/version db-schema/version}
-                             db-type
-                             (assoc :db/type db-type))
-                           {:block/name "card"
-                            :block/original-name "card"
-                            :block/uuid (d/squuid)}])
      (when me
        (d/transact! db-conn [(me-tx (d/db db-conn) me)]))
-
-     (d/transact! db-conn default-db/built-in-pages)
-
      (when listen-handler
        (listen-handler repo)))))
 

+ 0 - 5
src/main/frontend/format.cljs

@@ -3,14 +3,9 @@
             [frontend.format.adoc :refer [->AdocMode]]
             [frontend.format.protocol :as protocol]
             [logseq.graph-parser.mldoc :as gp-mldoc]
-            [logseq.graph-parser.text :as text]
             [logseq.graph-parser.util :as gp-util]
             [clojure.string :as string]))
 
-;; TODO: Properly fix this circular dependency:
-;; mldoc/->edn > text/parse-property > mldoc/link? ->mldoc/inline->edn + mldoc/default-config
-(set! gp-mldoc/parse-property text/parse-property)
-
 (defonce mldoc-record (->MldocMode))
 (defonce adoc-record (->AdocMode))
 

+ 0 - 8
src/main/logseq/graph_parser.cljs

@@ -60,14 +60,6 @@
                                (assoc :file/created-at (date-time-util/time-ms)))])]
     (d/transact! db (gp-util/remove-nils tx) (when new-graph? {:new-graph? true}))))
 
-(defn init-db
-  []
-  ;; TODO: Reuse code from frontend
-  (let [conn (d/create-conn db-schema/schema)]
-    (d/transact! conn [{:schema/version db-schema/version}])
-    (d/transact! conn default-db/built-in-pages)
-    conn))
-
 (defn parse
   [db files]
   (doseq [{:file/keys [path content]} files]

+ 18 - 0
src/main/logseq/graph_parser/db.cljs

@@ -0,0 +1,18 @@
+(ns logseq.graph-parser.db
+  (:require [frontend.db.default :as default-db]
+            [frontend.db-schema :as db-schema]
+            [datascript.core :as d]))
+
+(defn start-conn
+  "Create datascript conn with schema and default data"
+  []
+  (let [db-conn (d/create-conn db-schema/schema)]
+    (d/transact! db-conn [(cond-> {:schema/version db-schema/version}
+                                  ;; TODO: Handle this
+                                  #_db-type
+                                  #_(assoc :db/type db-type))
+                          {:block/name "card"
+                           :block/original-name "card"
+                           :block/uuid (d/squuid)}])
+    (d/transact! db-conn default-db/built-in-pages)
+    db-conn))

+ 7 - 0
src/main/logseq/graph_parser/extract.cljc

@@ -187,3 +187,10 @@
 (defn extract-all-block-refs
   [content]
   (map second (re-seq #"\(\(([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})\)\)" content)))
+
+#?(:org.babashka/nbb
+   (alter-var-root #'gp-mldoc/parse-property (constantly text/parse-property))
+   :default
+   ;; TODO: Properly fix this circular dependency:
+   ;; mldoc/->edn > text/parse-property > mldoc/link? ->mldoc/inline->edn + mldoc/default-config
+   (set! gp-mldoc/parse-property text/parse-property))

+ 0 - 6
src/test/logseq/graph_parser/nbb_test_runner.cljs

@@ -1,8 +1,6 @@
 (ns logseq.graph-parser.nbb-test-runner
   "Nbb tests for graph-parser"
   (:require [cljs.test :as t]
-            [logseq.graph-parser.mldoc :as gp-mldoc]
-            [logseq.graph-parser.text :as text]
             [logseq.graph-parser.text-test]
             [logseq.graph-parser.mldoc-test]
             [logseq.graph-parser.block-test]
@@ -16,10 +14,6 @@
 
 ;; run this function with: nbb-logseq -m logseq.test.nbb-test-runner/run-tests
 (defn run-tests []
-  ;; This hack is the same as the one in frontend.format. This has to be in an nbb only
-  ;; ns since alter-var-root doesn't exist in cljs and nbb doesn't support set! yet
-  #_:clj-kondo/ignore
-  (alter-var-root #'gp-mldoc/parse-property (constantly text/parse-property))
   (t/run-tests 'logseq.graph-parser.mldoc-test
                'logseq.graph-parser.text-test
                'logseq.graph-parser.property-test

+ 2 - 1
src/test/logseq/graph_parser_test.cljs

@@ -2,6 +2,7 @@
   "TODO: Should I reuse repo-test or split it?"
   (:require [cljs.test :refer [deftest is testing]]
             [logseq.graph-parser :as graph-parser]
+            [logseq.graph-parser.db :as gp-db]
             [frontend.test.docs-graph-helper :as docs-graph-helper]
             [datascript.core :as d]))
 
@@ -35,7 +36,7 @@
   (let [graph-dir "src/test/docs"
         _ (docs-graph-helper/clone-docs-repo-if-not-exists graph-dir)
         files (docs-graph-helper/build-graph-files graph-dir)
-        conn (graph-parser/init-db)
+        conn (gp-db/start-conn) 
         ; _ (repo-handler/parse-files-and-load-to-db! test-helper/test-db files {:re-render? false})
         _ (graph-parser/parse conn files)
         db @conn]