fix sqlize of maps in cljs

Signed-off-by: Sean Corfield <sean@corfield.org>
This commit is contained in:
Sean Corfield 2024-11-23 00:11:49 -08:00
parent b716d077c4
commit 049fe5b68b
No known key found for this signature in database
2 changed files with 17 additions and 9 deletions

View file

@ -63,6 +63,7 @@
(defn test "Run basic tests." [opts] (defn test "Run basic tests." [opts]
(run-task [:test :runner :1.11]) (run-task [:test :runner :1.11])
(run-task [:test :runner :cljs])
opts) opts)
(defn- pom-template [version] (defn- pom-template [version]

View file

@ -368,6 +368,15 @@
(keyword (name s))) (keyword (name s)))
s)) s))
(defn- inline-map [x]
(str "{"
(join ", " (map (fn [[k v]]
(str (format-entity k)
": "
(p/sqlize v))))
x)
"}"))
(extend-protocol p/InlineValue (extend-protocol p/InlineValue
nil nil
(sqlize [_] "NULL") (sqlize [_] "NULL")
@ -379,19 +388,17 @@
(sqlize [x] (sql-kw x)) (sqlize [x] (sql-kw x))
#?(:cljs PersistentVector :default clojure.lang.IPersistentVector) #?(:cljs PersistentVector :default clojure.lang.IPersistentVector)
(sqlize [x] (str "[" (join ", " (map p/sqlize) x) "]")) (sqlize [x] (str "[" (join ", " (map p/sqlize) x) "]"))
#?(:cljs PersistentHashMap :default clojure.lang.IPersistentMap) #?(:cljs PersistentArrayMap :default clojure.lang.IPersistentMap)
(sqlize [x] (str "{" (sqlize [x] (inline-map x))
(join ", " (map (fn [[k v]] #?@(:cljs [PersistentHashMap
(str (format-entity k) (sqlize [x] (inline-map x))])
": "
(p/sqlize v))))
x)
"}"))
#?@(:clj [java.util.UUID #?@(:clj [java.util.UUID
;; issue 385: quoted UUIDs for PostgreSQL/ANSI ;; issue 385: quoted UUIDs for PostgreSQL/ANSI
(sqlize [x] (str \' x \'))]) (sqlize [x] (str \' x \'))])
#?(:cljs default :default Object) #?(:cljs default :default Object)
(sqlize [x] (str x))) (sqlize [x] (if (string? x)
(str \' (str/replace x "'" "''") \')
(str x))))
(defn- sqlize-value [x] (p/sqlize x)) (defn- sqlize-value [x] (p/sqlize x))