Browse Source

enhance: add title-format support for import

Fixes
https://linear.app/logseq/issue/LOG-3219/import-journalpage-title-format-config.
Part of https://github.com/logseq/db-test/issues/61
Gabriel Horner 1 year ago
parent
commit
79569e8eaf

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

@@ -1140,15 +1140,20 @@
                                  :level :error
                                  :ex-data {:error error}}))))))
 
-(defn- export-config-file
+(defn export-config-file
+  "Exports logseq/config.edn by saving to database and setting any properties related to config"
   [repo-or-conn config-file <read-file {:keys [<save-file notify-user default-config]
                                         :or {default-config {}
                                              <save-file default-save-file}}]
   (-> (<read-file config-file)
       (p/then #(p/do!
                 (<save-file repo-or-conn "logseq/config.edn" %)
-                ;; Return original config as import process depends on original config e.g. :hidden
-                (edn/read-string %)))
+                (let [config (edn/read-string %)]
+                  (when-let [title-format (or (:journal/page-title-format config) (:date-formatter config))]
+                    (ldb/transact! repo-or-conn [{:db/ident :logseq.class/Journal
+                                                  :logseq.property.journal/title-format title-format}]))
+                  ;; Return original config as import process depends on original config e.g. :hidden
+                  config)))
       (p/catch (fn [err]
                  (notify-user {:msg "Import may have mistakes due to an invalid config.edn. Recommend re-importing with a valid config.edn"
                                :level :error

+ 10 - 1
deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs

@@ -120,7 +120,8 @@
 (defn- import-files-to-db
   "Import specific doc files for dev purposes"
   [files conn options]
-  (p/let [doc-options (gp-exporter/build-doc-options {:macros {}} (merge default-export-options options))
+  (p/let [doc-options (gp-exporter/build-doc-options (merge {:macros {}} (:user-config options))
+                                                     (merge default-export-options options))
           files' (mapv #(hash-map :path %) files)
           _ (gp-exporter/export-doc-files conn files' <read-file doc-options)]
     {:import-state (:import-state doc-options)}))
@@ -524,3 +525,11 @@
         "Existing page correctly set as class parent")
     (is (= "Thing" (get-in (d/entity @conn :user.class/CreativeWork) [:logseq.property/parent :block/title]))
         "New page correctly set as class parent")))
+
+(deftest-async export-config-file-sets-title-format
+  (p/let [conn (db-test/create-conn)
+          read-file #(p/do! (pr-str {:journal/page-title-format "yyyy-MM-dd"}))
+          _ (gp-exporter/export-config-file conn "logseq/config.edn" read-file {})]
+    (is (= "yyyy-MM-dd"
+           (:logseq.property.journal/title-format (d/entity @conn :logseq.class/Journal)))
+        "title format set correctly by config")))