clean up options passed in to HSQLView. add result-set-fn option support

This commit is contained in:
Gered 2016-06-01 16:50:33 -04:00
parent 6ce4b5c3d4
commit 687189e2e2

View file

@ -8,7 +8,7 @@
[clojure.java.jdbc :as j] [clojure.java.jdbc :as j]
[clojure.tools.logging :refer [warn]])) [clojure.tools.logging :refer [warn]]))
(defrecord HSQLView [id db-or-db-fn query-fn row-fn] (defrecord HSQLView [id db-or-db-fn query-fn options]
IView IView
(id [_] id) (id [_] id)
(data [_ namespace parameters] (data [_ namespace parameters]
@ -16,7 +16,9 @@
(db-or-db-fn namespace) (db-or-db-fn namespace)
db-or-db-fn) db-or-db-fn)
start (System/currentTimeMillis) start (System/currentTimeMillis)
data (j/query db (hsql/format (apply query-fn parameters)) {:row-fn row-fn}) data (j/query db
(hsql/format (apply query-fn parameters))
(select-keys options [:row-fn :result-set-fn]))
time (- (System/currentTimeMillis) start)] time (- (System/currentTimeMillis) start)]
(when (>= time 1000) (warn id "took" time "msecs")) (when (>= time 1000) (warn id "took" time "msecs"))
data)) data))
@ -30,5 +32,8 @@
"Creates a Honey SQL view that uses a JDBC database configuration. The db passed in "Creates a Honey SQL view that uses a JDBC database configuration. The db passed in
can either be a standard database connection map, or it can be a function that gets can either be a standard database connection map, or it can be a function that gets
passed a namespace and returns a database connection map." passed a namespace and returns a database connection map."
[id db-or-db-fn hsql-fn & {:keys [row-fn]}] [id db-or-db-fn hsql-fn & [{:keys [row-fn result-set-fn]
(HSQLView. id db-or-db-fn hsql-fn (or row-fn identity))) :or {row-fn identity
result-set-fn doall}
:as options}]]
(HSQLView. id db-or-db-fn hsql-fn options))