26 lines
641 B
Clojure
26 lines
641 B
Clojure
(ns beherbergung.db.export
|
|
(:require [clojure.pprint :refer [pprint]]
|
|
[clojure.edn]))
|
|
|
|
(defn all_docs [db_ctx]
|
|
(let [{:keys [sync q_unary]} db_ctx]
|
|
(sync)
|
|
(q_unary '{:find [(pull ?e [*])] :where [[?e :xt/id]]})))
|
|
|
|
(defn edn->pprint [edn]
|
|
(with-out-str (pprint edn)))
|
|
|
|
(defn write-edn [file docs]
|
|
(->> (edn->pprint docs)
|
|
(spit file)))
|
|
|
|
(defn export [file db_ctx]
|
|
(->> (all_docs db_ctx)
|
|
(write-edn file)))
|
|
|
|
(defn seed [file db_ctx]
|
|
(let [{:keys [tx_sync]} db_ctx]
|
|
(->> (clojure.edn/read-string (slurp file))
|
|
(map (fn [entry] [:xtdb.api/put entry]))
|
|
tx_sync)))
|