diff --git a/ChangeLog.md b/ChangeLog.md index 208249f..bb75af8 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,14 @@ +## Changes between 1.7.0 and 1.8.0-beta1 + +### monger.core/connect-via-uri + +`monger.core/connect-via-uri` is a version of `monger.core/connect-via-uri!` +which returns the connection instead of mutating a var. + +It should be used by projects that are built from reloadable +components, together with `monger.multi.*`. + + ## Changes between 1.7.0-beta1 and 1.7.0 ### MongoDB Java Driver Update diff --git a/src/clojure/monger/core.clj b/src/clojure/monger/core.clj index f36eec4..e9c07a9 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))