|
16 | 16 | (mapv query-parameters (.getParametersList query-info))) |
17 | 17 |
|
18 | 18 | (defn- logged-query [^QueryInfo query-info] |
19 | | - (let [query (.getQuery query-info) |
20 | | - params (query-parameter-lists query-info)] |
| 19 | + (let [query (.getQuery query-info) |
| 20 | + params (query-parameter-lists query-info)] |
21 | 21 | (into [query] (if (= (count params) 1) (first params) params)))) |
22 | 22 |
|
23 | | -(defn- logging-listener [logger] |
| 23 | +(defn- logging-listener [logger query-formatter] |
24 | 24 | (reify QueryExecutionListener |
25 | 25 | (beforeQuery [_ _ _]) |
26 | 26 | (afterQuery [_ exec-info query-infos] |
27 | 27 | (let [elapsed (.getElapsedTime exec-info) |
28 | | - queries (mapv logged-query query-infos)] |
| 28 | + queries (mapv (comp (or query-formatter identity) logged-query) query-infos)] |
29 | 29 | (if (= (count queries) 1) |
30 | 30 | (log/log logger :info ::sql/query {:query (first queries), :elapsed elapsed}) |
31 | 31 | (log/log logger :info ::sql/batch-query {:queries queries, :elapsed elapsed})))))) |
32 | 32 |
|
33 | | -(defn- wrap-logger [datasource logger] |
| 33 | +(defn- wrap-logger [datasource logger query-formatter] |
34 | 34 | (doto (ProxyDataSource. datasource) |
35 | | - (.addListener (logging-listener logger)))) |
| 35 | + (.addListener (logging-listener logger query-formatter)))) |
36 | 36 |
|
37 | 37 | (defn- unwrap-logger [^DataSource datasource] |
38 | 38 | (.unwrap datasource DataSource)) |
39 | 39 |
|
40 | 40 | (defmethod ig/init-key :duct.database.sql/hikaricp |
41 | | - [_ {:keys [logger connection-uri jdbc-url] :as options}] |
| 41 | + [_ {:keys [logger connection-uri jdbc-url log-query-formatter] :as options}] |
42 | 42 | (let [datasource (-> (dissoc options :logger) |
43 | 43 | (assoc :jdbc-url (or jdbc-url connection-uri)) |
44 | 44 | (hikari-cp/make-datasource))] |
45 | 45 | (if logger |
46 | | - (-> (sql/->Boundary {:datasource (wrap-logger datasource logger)}) |
| 46 | + (-> (sql/->Boundary {:datasource (wrap-logger datasource logger log-query-formatter)}) |
47 | 47 | (assoc :unlogged-spec {:datasource datasource})) |
48 | 48 | (sql/->Boundary {:datasource datasource})))) |
49 | 49 |
|
|
0 commit comments