Skip to content

Instantly share code, notes, and snippets.

@delonnewman
Last active March 28, 2016 18:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save delonnewman/4f4cfa25bb9dadfe1f7d to your computer and use it in GitHub Desktop.
Save delonnewman/4f4cfa25bb9dadfe1f7d to your computer and use it in GitHub Desktop.
; from https://aan.io/dumping-datomic-schema/
(let [dbval (d/db conn)]
(->> (d/q '[:find ?ident
:in $ ?p
:where
[:db.part/db :db.install/attribute ?attr]
[?attr :db/ident ?ident]]
dbval :db.part/user)
(map (fn [attr] [(d/entity dbval (first attr))]))
(map (fn [attr]
{:db/id #db/id[:db.part/db]
:db/ident (:db/ident (first attr))
:db/valueType (:db/valueType (first attr))
:db/cardinality (:db/cardinality (first attr))
:db/doc (:db/doc (first attr))
:db/isComponent (or (:db/isComponent (first attr)) (not (nil? (:db/isComponent (first attr)))))
:db/fulltext (when (:db/fulltext (first attr)) true)
:db/unique (when (not (nil? (:db/unique (first attr)))) :db.unique/identity)
:db.install/_attribute :db.part/db}))
; remove all the nils
(map (fn [attr] (apply dissoc attr (for [[k v] attr :when (nil? v)] k))))
(filter (fn [attr] (not= (subs (namespace (:db/ident attr)) 0 2) "db")))
(sort-by :db/ident)))
(with-open [w (clojure.java.io/writer "data.edn")]
(binding [*print-length* false
*out* w]
(pr dbval)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment