Explorar el Código

enhance(dev): option to catch export validation errors

to write invalid edn and debug issues quicker
Gabriel Horner hace 9 meses
padre
commit
17acbbc8d4

+ 3 - 1
deps/db/script/export_graph.cljs

@@ -37,6 +37,8 @@
                          :desc "Include timestamps in export"}
    :file {:alias :f
           :desc "Saves edn to file"}
+   :catch-validation-errors? {:alias :c
+                              :desc "Catch validation errors for dev"}
    :exclude-namespaces {:alias :e
                         :coerce #{}
                         :desc "Namespaces to exclude from properties and classes"}
@@ -54,7 +56,7 @@
             (js/process.exit 1))
         [dir db-name] (get-dir-and-db-name graph-dir)
         conn (sqlite-cli/open-db! dir db-name)
-        export-options (merge (select-keys options [:include-timestamps? :exclude-namespaces :exclude-built-in-pages?])
+        export-options (merge (dissoc options :file :export-options)
                               (edn/read-string (:export-options options)))
         export-map (sqlite-export/build-export @conn {:export-type :graph :graph-options export-options})]
     (if (:file options)

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

@@ -700,8 +700,9 @@
           undeclared-properties (-> (set (keys used-properties))
                                     (set/difference (set (keys properties)))
                                     ((fn [x] (remove db-property/logseq-property? x))))]
-      (assert (empty? undeclared-properties)
-              (str "The following properties used in EDN were not declared in :properties: " undeclared-properties)))))
+      (when (seq undeclared-properties)
+        (throw (ex-info (str "The following properties used in EDN were not declared in :properties: " undeclared-properties)
+                        {:used-properties (select-keys used-properties undeclared-properties)}))))))
 
 (defn ^:large-vars/doc-var build-blocks-tx
   "Given an EDN map for defining pages, blocks and properties, this creates a map

+ 6 - 1
deps/db/src/logseq/db/sqlite/export.cljs

@@ -713,7 +713,12 @@
           (build-graph-ontology-export db {})
           :graph
           (build-graph-export db (:graph-options options)))]
-    (ensure-export-is-valid (dissoc export-map ::block ::graph-files ::kv-values) options)
+    (if (get-in options [:graph-options :catch-validation-errors?])
+      (try
+        (ensure-export-is-valid (dissoc export-map ::block ::graph-files ::kv-values) options)
+        (catch ExceptionInfo e
+          (println "Caught error:" e)))
+      (ensure-export-is-valid (dissoc export-map ::block ::graph-files ::kv-values) options))
     (assoc export-map ::export-type export-type)))
 
 ;; Import fns