Browse Source

add export graph command

Also add properties :file option. Was useful to compare sqlite.build
EDN w/ export equivalent
Gabriel Horner 9 months ago
parent
commit
078ac512ad

+ 6 - 1
scripts/src/logseq/tasks/db_graph/create_graph_with_properties.cljs

@@ -10,6 +10,7 @@
             [clojure.edn :as edn]
             [clojure.set :as set]
             [clojure.string :as string]
+            [cljs.pprint :as pprint]
             [datascript.core :as d]
             [logseq.common.util :as common-util]
             [logseq.common.util.date-time :as date-time-util]
@@ -190,6 +191,8 @@
   "Options spec"
   {:help {:alias :h
           :desc "Print help"}
+   :file {:alias :f
+          :desc "File to save generated sqlite.build EDN"}
    :config {:alias :c
             :coerce edn/read-string
             :desc "EDN map to add to config.edn"}})
@@ -209,7 +212,9 @@
             (fse/removeSync db-path))
         conn (outliner-cli/init-conn dir db-name {:additional-config (:config options)
                                                   :classpath (cp/get-classpath)})
-        {:keys [init-tx block-props-tx]} (outliner-cli/build-blocks-tx (create-init-data))
+        init-data (create-init-data)
+        _ (when (:file options) (fs/writeFileSync (:file options) (with-out-str (pprint/pprint init-data))))
+        {:keys [init-tx block-props-tx]} (outliner-cli/build-blocks-tx init-data)
         existing-names (set (map :v (d/datoms @conn :avet :block/title)))
         conflicting-names (set/intersection existing-names (set (keep :block/title init-tx)))]
     (when (seq conflicting-names)

+ 9 - 0
src/main/frontend/handler/db_based/export.cljs

@@ -61,6 +61,15 @@
                            (count (:properties result)) " properties"))
       (notification/show! "Copied graphs's ontology data!" :success))))
 
+(defn ^:export export-graph-data []
+  (when-let [^Object worker @state/*db-worker]
+    (p/let [result* (.export-edn worker (state/get-current-repo) (ldb/write-transit-str {:export-type :graph}))
+            result (ldb/read-transit-str result*)
+            pull-data (with-out-str (pprint/pprint result))]
+      (.writeText js/navigator.clipboard pull-data)
+      (println pull-data)
+      (notification/show! "Copied graphs's data!" :success))))
+
 (defn- import-submit [import-inputs _e]
   (let [export-map (try (edn/read-string (:import-data @import-inputs)) (catch :default _err ::invalid-import))
         import-block? (::sqlite-export/block export-map)

+ 6 - 0
src/main/frontend/modules/shortcut/config.cljs

@@ -625,6 +625,10 @@
                                      :db-graph? true
                                      :fn :frontend.handler.db-based.export/export-graph-ontology-data}
 
+   :misc/export-graph-data {:binding []
+                            :db-graph? true
+                            :fn :frontend.handler.db-based.export/export-graph-data}
+
    :misc/import-edn-data {:binding []
                           :db-graph? true
                           :fn :frontend.handler.db-based.export/import-edn-data}
@@ -851,6 +855,7 @@
           :sidebar/close-top
           :misc/export-block-data
           :misc/export-page-data
+          :misc/export-graph-data
           :misc/export-graph-ontology-data
           :misc/import-edn-data
           :dev/show-block-data
@@ -1043,6 +1048,7 @@
      :git/commit
      :misc/export-block-data
      :misc/export-page-data
+     :misc/export-graph-data
      :misc/export-graph-ontology-data
      :misc/import-edn-data
      :dev/show-block-data

+ 1 - 0
src/resources/dicts/en.edn

@@ -795,6 +795,7 @@
   :git/commit "Create git commit with message"
   :misc/export-block-data "Export block EDN data"
   :misc/export-page-data "Export page EDN data"
+  :misc/export-graph-data "Export graph's EDN data"
   :misc/export-graph-ontology-data "Export graph's tags and properties EDN data"
   :misc/import-edn-data "Import EDN data"
   :dev/show-block-data "(Dev) Show block data"