summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clojure_sql/jdbc.clj16
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)))