From 47efed826049e4a002157668e8df8f6470036749 Mon Sep 17 00:00:00 2001 From: Greg V Date: Thu, 30 Jan 2014 18:58:36 +0300 Subject: [PATCH] Add non-bang version of connect-via-uri --- src/clojure/monger/core.clj | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/clojure/monger/core.clj b/src/clojure/monger/core.clj index 0d19418..e956b52 100644 --- a/src/clojure/monger/core.clj +++ b/src/clojure/monger/core.clj @@ -223,9 +223,10 @@ (catch Exception _ false)))) -(defn connect-via-uri! - "Connects to MongoDB using a URI, sets up default connection and database. Commonly used for PaaS-based applications, - for example, running on Heroku. If username and password are provided, performs authentication." +(defn connect-via-uri + "Connects to MongoDB using a URI, returns the connection and database as a map with :conn and :db. + Commonly used for PaaS-based applications, for example, running on Heroku. + If username and password are provided, performs authentication." [^String uri-string] (let [uri (MongoClientURI. uri-string) conn (MongoClient. uri) @@ -235,7 +236,14 @@ (when (and user pwd) (when-not (authenticate conn db user pwd) (throw (IllegalArgumentException. (format "Could not authenticate with MongoDB. Either database name or credentials are invalid. Database name: %s, username: %s" (.getName db) user))))) - ;; only do this *after* we authenticated because set-db! will try to set up a default GridFS instance. MK. + {:conn conn, :db db})) + + +(defn connect-via-uri! + "Connects to MongoDB using a URI, sets up default connection and database. Commonly used for PaaS-based applications, + for example, running on Heroku. If username and password are provided, performs authentication." + [uri-string] + (let [{:keys [conn db]} (connect-via-uri uri-string)] (set-connection! conn) (when db (set-db! db))