(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])) (defn document->transit [document] (let [out (ByteArrayOutputStream.) writer (transit/writer out :json)] (transit/write writer document) (.toString out))) (defn transit->document [datastring] (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))