dump_datoms.cljs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. (ns dump-datoms
  2. "A script that dumps all eavt datoms to a specified edn file
  3. $ yarn -s nbb-logseq script/dump_datoms.cljs db-name datoms.edn"
  4. (:require [datascript.core :as d]
  5. [clojure.pprint :as pprint]
  6. [logseq.db.sqlite.cli :as sqlite-cli]
  7. [nbb.core :as nbb]
  8. ["path" :as path]
  9. ["os" :as os]
  10. ["fs" :as fs]))
  11. (defn read-graph
  12. "The db graph bare version of gp-cli/parse-graph"
  13. [graph-name]
  14. (let [graphs-dir (path/join (os/homedir) "logseq/graphs")]
  15. (sqlite-cli/open-db! graphs-dir graph-name)))
  16. (defn -main [args]
  17. (when (< (count args) 2)
  18. (println "Usage: $0 GRAPH FILE")
  19. (js/process.exit 1))
  20. (let [[graph-name file*] args
  21. conn (read-graph graph-name)
  22. datoms (mapv #(vec %) (d/datoms @conn :eavt))
  23. parent-dir (or js/process.env.ORIGINAL_PWD ".")
  24. file (path/join parent-dir file*)]
  25. (println "Writing" (count datoms) "datoms to" file)
  26. (fs/writeFileSync file (with-out-str (pprint/pprint datoms)))))
  27. (when (= nbb/*file* (nbb/invoked-file))
  28. (-main *command-line-args*))