diff options
-rw-r--r-- | src/clojure_sql/jdbc.clj | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/clojure_sql/jdbc.clj b/src/clojure_sql/jdbc.clj index 45b1839..5b9de12 100644 --- a/src/clojure_sql/jdbc.clj +++ b/src/clojure_sql/jdbc.clj @@ -1,13 +1,25 @@ (ns clojure-sql.jdbc (:require [clojure.java.jdbc :as jdbc] - [clojure-sql.core :refer [set-query-executor!]])) + [clojure-sql.core :refer [set-query-executor!]] + [clojure.string :as string])) + +(defn ^:private dotted-to-nested-map-one [obj] + (reduce (fn [acc [key val]] + (let [dotted (name key) + keys (string/split dotted #"\.") + keywords (map keyword keys)] + (assoc-in acc keywords val))) + {} obj)) + +(defn ^:private dotted-to-nested-maps [objs] + (mapv dotted-to-nested-map-one objs)) (defn use-jdbc! [connection-string] (set-query-executor! (fn [type query] (jdbc/with-connection connection-string (case type :select (jdbc/with-query-results results query - (vec results)) + (dotted-to-nested-maps results)) :insert (jdbc/do-prepared-return-keys (first query) (next query)) :update (jdbc/do-prepared-return-keys (first query) (next query)) :delete (first (jdbc/do-prepared (first query) (next query))) |