Skip to content

Commit

Permalink
Merge pull request #141 from vinurs/master
Browse files Browse the repository at this point in the history
feat: extend SettableParameter protocol for IPersistentVector
  • Loading branch information
yogthos committed May 23, 2024
2 parents e670eed + 8e52b22 commit 4af9b46
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions libs/kit-postgres/src/kit/edge/db/postgres.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[next.jdbc.prepare :as prepare]
[next.jdbc.result-set :as result-set])
(:import
[clojure.lang IPersistentMap]
[clojure.lang IPersistentMap IPersistentVector]
[java.sql Array PreparedStatement Timestamp]
[java.time Instant LocalDate LocalDateTime]
[org.postgresql.util PGobject]))
Expand Down Expand Up @@ -57,4 +57,14 @@

IPersistentMap
(set-parameter [m ^PreparedStatement s i]
(.setObject s i (->pgobject m))))
(.setObject s i (->pgobject m)))

IPersistentVector
(set-parameter [^clojure.lang.IPersistentVector 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 (->pgobject v))))))

0 comments on commit 4af9b46

Please sign in to comment.