Skip to content
Snippets Groups Projects
Unverified Commit 51421818 authored by Simon Belak's avatar Simon Belak Committed by GitHub
Browse files

MongoDB: add nippy serialization for BSON.ObjectId (#11373)

parent 24bb72eb
No related branches found
No related tags found
No related merge requests found
......@@ -18,15 +18,25 @@
[command :as cmd]
[conversion :as conv]
[db :as mdb]]
[schema.core :as s])
[schema.core :as s]
[taoensso.nippy :as nippy])
(:import com.mongodb.DB
org.bson.BsonUndefined))
org.bson.BsonUndefined
org.bson.types.ObjectId))
;; JSON Encoding (etc.)
;; Encode BSON undefined like `nil`
(json.generate/add-encoder org.bson.BsonUndefined json.generate/encode-nil)
(nippy/extend-freeze ObjectId :mongodb/ObjectId
[^ObjectId oid data-output]
(.writeUTF data-output (.toHexString oid)))
(nippy/extend-thaw :mongodb/ObjectId
[data-input]
(ObjectId. (.readUTF data-input)))
(driver/register! :mongo)
(defmethod driver/can-connect? :mongo
......
......@@ -21,6 +21,7 @@
[metabase.test.data
[datasets :as datasets]
[interface :as tx]]
[taoensso.nippy :as nippy]
[toucan.db :as db]
[toucan.util.test :as tt])
(:import org.bson.types.ObjectId))
......@@ -293,3 +294,9 @@
:limit 3})
qp.t/data
(select-keys [:columns :rows]))))
;; Make sure we correctly (un-)freeze BSON IDs
(deftest ObjectId-serialization
(let [oid (ObjectId. "012345678901234567890123")]
(is (= oid (nippy/thaw (nippy/freeze oid))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment