From 31aff189d383121c48b74906fef63f5829794eb5 Mon Sep 17 00:00:00 2001 From: Toby Hede Date: Sun, 12 Feb 2012 15:43:33 +1100 Subject: [PATCH 1/3] find-one-as-map accepts fields as 3rd parameter partial resolution of: https://github.com/michaelklishin/monger/issues/8 --- src/monger/collection.clj | 10 ++++++++-- test/monger/test/regular_finders.clj | 22 +++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/monger/collection.clj b/src/monger/collection.clj index edb646e..7a6c76e 100644 --- a/src/monger/collection.clj +++ b/src/monger/collection.clj @@ -155,12 +155,18 @@ "Returns a single object converted to Map from this collection matching the query." ([^String collection ^Map ref] (from-db-object ^DBObject (find-one collection ref) true)) - ([^String collection ^Map ref keywordize] - (from-db-object ^DBObject (find-one collection ref) keywordize)) + ([^String collection ^Map ref fields] + (from-db-object ^DBObject (find-one collection ref fields) true)) ([^String collection ^Map ref ^List fields keywordize] (from-db-object ^DBObject (find-one collection ref fields) keywordize))) + ; ([^String collection ^Map ref keywordize] + ; (from-db-object ^DBObject (find-one collection ref fields) keywordize)) + ; ([^String collection ^Map ref ^List fields keywordize] + ; (from-db-object ^DBObject (find-one collection ref fields) keywordize))) + + ;; ;; monger.collection/find-by-id diff --git a/test/monger/test/regular_finders.clj b/test/monger/test/regular_finders.clj index 9c97116..bad3f0a 100644 --- a/test/monger/test/regular_finders.clj +++ b/test/monger/test/regular_finders.clj @@ -68,9 +68,29 @@ doc { :data-store "MongoDB", :language "Clojure", :_id doc-id } fields [:data-store]] (mgcol/insert collection doc) - (is (= { :data-store "MongoDB", :_id doc-id } (mgcol/find-one-as-map collection { :language "Clojure" } fields true))))) + (is (= { :data-store "MongoDB", :_id doc-id } (mgcol/find-one-as-map collection { :language "Clojure" } fields))))) +(deftest find-one-partial-document-as-map-when-collection-has-matches-with-keywordize + (let [collection "docs" + doc-id (monger.util/random-uuid) + doc { :data-store "MongoDB", :language "Clojure", :_id doc-id } + fields [:data-store] + _id (mgcol/insert collection doc) + loaded (mgcol/find-one-as-map collection { :language "Clojure" } fields true) + ] + (is (= { :data-store "MongoDB", :_id doc-id } loaded )))) + + +(deftest find-one-partial-document-as-map-when-collection-has-matches-with-keywordize-false + (let [collection "docs" + doc-id (monger.util/random-uuid) + doc { :data-store "MongoDB", :language "Clojure", :_id doc-id } + fields [:data-store] + _id (mgcol/insert collection doc) + loaded (mgcol/find-one-as-map collection { :language "Clojure" } fields false) + ] + (is (= { "_id" doc-id, "data-store" "MongoDB" } loaded )))) ;; ;; find-by-id From 3aa842fb0445b0a6813cc3f201a08b88f09429b2 Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Sun, 12 Feb 2012 09:52:55 +0400 Subject: [PATCH 2/3] Remove commented out code --- src/monger/collection.clj | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/monger/collection.clj b/src/monger/collection.clj index 7a6c76e..ec542cb 100644 --- a/src/monger/collection.clj +++ b/src/monger/collection.clj @@ -161,12 +161,6 @@ (from-db-object ^DBObject (find-one collection ref fields) keywordize))) - ; ([^String collection ^Map ref keywordize] - ; (from-db-object ^DBObject (find-one collection ref fields) keywordize)) - ; ([^String collection ^Map ref ^List fields keywordize] - ; (from-db-object ^DBObject (find-one collection ref fields) keywordize))) - - ;; ;; monger.collection/find-by-id From f8bb19b6ba7a2ec0632b037c29c24b8b51e30bee Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Sun, 12 Feb 2012 09:57:53 +0400 Subject: [PATCH 3/3] Add ChangeLog file, closes #8 --- ChangeLog.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 ChangeLog.md diff --git a/ChangeLog.md b/ChangeLog.md new file mode 100644 index 0000000..a2c3b26 --- /dev/null +++ b/ChangeLog.md @@ -0,0 +1,23 @@ +## Changes between 1.0.0-beta1 and 1.0.0-beta2 + +### 3-arity of monger.collection/find-one-as-map now takes a vector of fields + +3-arity of monger.collection/find-one-as-map now takes a vector of fields +instead of `keywordize` to better fit a more commonly needed case. + +``` clojure +;; 3-arity in 1.0.0-beta1 +(monger.collection/find-one-as-map "documents" { :first_name "John" } false) +``` + +``` clojure +;; 3-arity in 1.0.0-beta2 +(monger.collection/find-one-as-map "documents" { :first_name "John" } [:first\_name, :last\_name, :age]) +``` + + +If you need to use `keywordize`, use 4-arity: + +``` clojure +(monger.collection/find-one-as-map "documents" { :first_name "John" } [:first\_name, :last\_name, :age] false) +```