Browse Source

renamed the randomNumber column to randomnumber

Sotnikov, Dmitri 9 years ago
parent
commit
fd263bcef5

+ 1 - 1
frameworks/Clojure/luminus/hello/resources/sql/queries.sql

@@ -9,5 +9,5 @@ SELECT * FROM fortune
 -- :name update-world! :! :1
 -- :name update-world! :! :1
 -- update an existing world record
 -- update an existing world record
 UPDATE world
 UPDATE world
-SET "randomNumber" = :randomNumber
+SET "randomnumber" = :randomNumber
 WHERE id = :id
 WHERE id = :id

+ 11 - 54
frameworks/Clojure/luminus/hello/src/clj/hello/db/core.clj

@@ -4,7 +4,8 @@
     [clojure.java.jdbc :as jdbc]
     [clojure.java.jdbc :as jdbc]
     [conman.core :as conman]
     [conman.core :as conman]
     [hello.config :refer [env]]
     [hello.config :refer [env]]
-    [mount.core :refer [defstate]])
+    [mount.core :refer [defstate]]
+    clojure.set)
   (:import org.postgresql.util.PGobject
   (:import org.postgresql.util.PGobject
            org.postgresql.jdbc4.Jdbc4Array
            org.postgresql.jdbc4.Jdbc4Array
            clojure.lang.IPersistentMap
            clojure.lang.IPersistentMap
@@ -27,55 +28,6 @@
 
 
 (conman/bind-connection *db* "sql/queries.sql")
 (conman/bind-connection *db* "sql/queries.sql")
 
 
-(defn to-date [sql-date]
-  (-> sql-date (.getTime) (java.util.Date.)))
-
-(extend-protocol jdbc/IResultSetReadColumn
-  Date
-  (result-set-read-column [v _ _] (to-date v))
-
-  Timestamp
-  (result-set-read-column [v _ _] (to-date v))
-
-  Jdbc4Array
-  (result-set-read-column [v _ _] (vec (.getArray v)))
-
-  PGobject
-  (result-set-read-column [pgobj _metadata _index]
-    (let [type  (.getType pgobj)
-          value (.getValue pgobj)]
-      (case type
-        "json" (parse-string value true)
-        "jsonb" (parse-string value true)
-        "citext" (str value)
-        value))))
-
-(extend-type java.util.Date
-  jdbc/ISQLParameter
-  (set-parameter [v ^PreparedStatement stmt ^long idx]
-    (.setTimestamp stmt idx (Timestamp. (.getTime v)))))
-
-(extend-type clojure.lang.IPersistentVector
-  jdbc/ISQLParameter
-  (set-parameter [v ^java.sql.PreparedStatement stmt ^long idx]
-    (let [conn      (.getConnection stmt)
-          meta      (.getParameterMetaData stmt)
-          type-name (.getParameterTypeName meta idx)]
-      (if-let [elem-type (when (= (first type-name) \_) (apply str (rest type-name)))]
-        (.setObject stmt idx (.createArrayOf conn elem-type (to-array v)))
-        (.setObject stmt idx v)))))
-
-(defn to-pg-json [value]
-  (doto (PGobject.)
-    (.setType "jsonb")
-    (.setValue (generate-string value))))
-
-(extend-protocol jdbc/ISQLValue
-  IPersistentMap
-  (sql-value [value] (to-pg-json value))
-  IPersistentVector
-  (sql-value [value] (to-pg-json value)))
-
 ;; queries
 ;; queries
 
 
 (defn get-query-count [queries]
 (defn get-query-count [queries]
@@ -87,21 +39,26 @@
       (> n 500) 500
       (> n 500) 500
       :else     n)))
       :else     n)))
 
 
+(defn rename-keys [results]
+  (map #(clojure.set/rename-keys % {:randomnumber :randomNumber}) results))
+
 (defn run-queries
 (defn run-queries
   "Run the specified number of queries, return the results"
   "Run the specified number of queries, return the results"
   [queries]
   [queries]
-  (get-worlds {:ids (repeatedly (get-query-count queries) #(inc (rand-int 9999)))}))
+  (->> {:ids (repeatedly (get-query-count queries) #(inc (rand-int 9999)))}
+      get-worlds
+      rename-keys))
 
 
 (defn get-fortunes []
 (defn get-fortunes []
    "Fetch the full list of Fortunes from the database, sort them by the fortune
    "Fetch the full list of Fortunes from the database, sort them by the fortune
   message text, and then return the results."
   message text, and then return the results."
   (sort-by
   (sort-by
    :message
    :message
-   (conj (get-all-fortunes)
+   (conj (rename-keys (get-all-fortunes))
          {:id 0 :message "Additional fortune added at request time."})))
          {:id 0 :message "Additional fortune added at request time."})))
 
 
 (defn set-random-number!
 (defn set-random-number!
-  "set a new randomNumber, persist, and return"
+  "set a new randomNumber, persist, and return the record"
   [{:keys [id]}]
   [{:keys [id]}]
   (let [w {:id id :randomNumber (inc (rand-int 9999))}]
   (let [w {:id id :randomNumber (inc (rand-int 9999))}]
     (try
     (try
@@ -114,4 +71,4 @@
   "Changes the :randomNumber of a number of world entities.
   "Changes the :randomNumber of a number of world entities.
   Persists the changes to sql then returns the updated entities"
   Persists the changes to sql then returns the updated entities"
   [queries]
   [queries]
-  (map set-random-number! (run-queries queries)))
+  (doall (map set-random-number! (run-queries queries))))