Skip to content
Snippets Groups Projects
encoding.clj 767 B
Newer Older
(ns document-storage.postgres.encoding
  (:require [cognitect.transit :as transit]
            [taoensso.nippy :as nippy-compression :as nippy]
            [taoensso.nippy.compression :as nippy-compression])
  (:import [java.io ByteArrayInputStream ByteArrayOutputStream]))

  (let [out (ByteArrayOutputStream.)
        writer (transit/writer out :json)]
    (transit/write writer document)
    (.toString out)))

  (let [in (ByteArrayInputStream. (.getBytes datastring))
        reader (transit/reader in :json)]
    (transit/read reader)))


(defn encode-document [data]
  (nippy/freeze data {:compression nippy-compression/lz4-compressor}))

(defn decode-document [data]
  (nippy/thaw data))