Reuse starting db conn

Also move circular dep hack to ns that both nbb and cljs can use
pull/5420/head
Gabriel Horner 2022-05-22 21:55:08 -04:00
parent 3bc2479181
commit 89d73bc178
7 changed files with 30 additions and 33 deletions

View File

@ -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)))))

View File

@ -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))

View File

@ -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]

View File

@ -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))

View File

@ -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))

View File

@ -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

View File

@ -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]