diff --git a/src/monger/convertion.clj b/src/monger/convertion.clj index 36c2d6f..454b1c1 100644 --- a/src/monger/convertion.clj +++ b/src/monger/convertion.clj @@ -1,6 +1,6 @@ (ns monger.convertion (:import (com.mongodb DBObject BasicDBObject) - (java.util Map List))) + (clojure.lang IPersistentMap Keyword))) (defprotocol ConvertToDBObject (to-db-object [input] "Converts given piece of Clojure data to BasicDBObject MongoDB Java driver uses")) @@ -9,13 +9,21 @@ nil (to-db-object [input] input) + Object (to-db-object [input] input) - Map - (to-db-object [input] - {})) - + + Keyword + (to-db-object [#^Keyword o] (.getName o)) + + IPersistentMap + (to-db-object [#^IPersistentMap input] + (let [o (BasicDBObject.)] + (doseq [[k v] input] + (.put o (to-db-object k) (to-db-object v))) + o))) + diff --git a/test/monger/test/convertion.clj b/test/monger/test/convertion.clj index 606f5a2..5646649 100644 --- a/test/monger/test/convertion.clj +++ b/test/monger/test/convertion.clj @@ -27,4 +27,5 @@ (let [input { :int 1, :string "Mongo", :float 22.23 } output (monger.convertion/to-db-object input)] (is (= 1 (.get output "int"))) - )) + (is (= "Mongo" (.get output "string"))) + (is (= 22.23 (.get output "float")))))