diff --git a/src/duct/database/sql/hikaricp.clj b/src/duct/database/sql/hikaricp.clj index c0f577c..b5e75ef 100644 --- a/src/duct/database/sql/hikaricp.clj +++ b/src/duct/database/sql/hikaricp.clj @@ -39,11 +39,13 @@ (defmethod ig/init-key :duct.database.sql/hikaricp [_ {:keys [logger connection-uri jdbc-url] :as options}] - (sql/->Boundary {:datasource - (-> (dissoc options :logger) + (let [datasource (-> (dissoc options :logger) (assoc :jdbc-url (or jdbc-url connection-uri)) - (hikari-cp/make-datasource) - (cond-> logger (wrap-logger logger)))})) + (hikari-cp/make-datasource))] + (if logger + (-> (sql/->Boundary {:datasource (wrap-logger datasource logger)}) + (assoc :unlogged-spec {:datasource datasource})) + (sql/->Boundary {:datasource datasource})))) (defmethod ig/halt-key! :duct.database.sql/hikaricp [_ {:keys [spec]}] (let [ds (unwrap-logger (:datasource spec))] diff --git a/test/duct/database/sql/hikaricp_test.clj b/test/duct/database/sql/hikaricp_test.clj index 132c076..8d56416 100644 --- a/test/duct/database/sql/hikaricp_test.clj +++ b/test/duct/database/sql/hikaricp_test.clj @@ -79,3 +79,19 @@ (is (not (.isClosed (unwrap-logger (:datasource spec))))) (ig/halt-key! ::sql/hikaricp hikaricp) (is (.isClosed (unwrap-logger (:datasource spec)))))) + +(deftest unlogged-test + (let [logs (atom []) + logger (->AtomLogger logs) + hikaricp (ig/init-key ::sql/hikaricp {:jdbc-url "jdbc:sqlite:" :logger logger}) + spec (:unlogged-spec hikaricp)] + (jdbc/execute! spec ["CREATE TABLE foo (id INT, body TEXT)"]) + (jdbc/db-do-commands spec ["INSERT INTO foo VALUES (1, 'a')" + "INSERT INTO foo VALUES (2, 'b')"]) + (is (= (jdbc/query spec ["SELECT * FROM foo"]) + [{:id 1, :body "a"} {:id 2, :body "b"}])) + (is (= (jdbc/query spec ["SELECT * FROM foo WHERE id = ?" 1]) + [{:id 1, :body "a"}])) + (is (= (jdbc/query spec ["SELECT * FROM foo WHERE id = ? AND body = ?" 1 "a"]) + [{:id 1, :body "a"}])) + (is (empty? @logs))))