next-jdbc/src/next/jdbc.clj

101 lines
3.1 KiB
Clojure
Raw Normal View History

2019-01-08 07:03:20 +00:00
;; copyright (c) 2018-2019 Sean Corfield, all rights reserved
2019-01-08 04:38:58 +00:00
2019-01-08 07:03:20 +00:00
(ns next.jdbc
""
2019-03-31 23:54:34 +00:00
(:require [next.jdbc.connection] ; used to extend protocols
[next.jdbc.prepare :as prepare] ; used to extend protocols
[next.jdbc.protocols :as p]
[next.jdbc.result-set :as rs]
[next.jdbc.sql :as sql]
2019-04-01 01:22:04 +00:00
[next.jdbc.transaction])) ; used to extend protocols
2019-01-08 07:03:20 +00:00
(set! *warn-on-reflection* true)
2019-03-31 23:54:34 +00:00
(defn get-datasource [spec] (p/get-datasource spec))
2019-03-31 23:54:34 +00:00
(defn get-connection [spec opts] (p/get-connection spec opts))
2019-01-10 07:30:46 +00:00
2019-03-31 23:54:34 +00:00
(defn prepare [spec sql-params opts] (p/prepare spec sql-params opts))
2019-01-08 07:03:20 +00:00
2019-03-31 06:12:37 +00:00
(defn reducible!
2019-03-31 03:36:53 +00:00
"General SQL execution function.
Returns a reducible that, when reduced, runs the SQL and yields the result."
2019-03-31 23:54:34 +00:00
([stmt] (p/-execute stmt [] {}))
2019-03-31 03:36:53 +00:00
([connectable sql-params & [opts]]
2019-03-31 23:54:34 +00:00
(p/-execute connectable sql-params opts)))
2019-03-31 06:13:01 +00:00
(defn execute!
""
2019-03-31 23:54:34 +00:00
([stmt]
(rs/execute! stmt [] {}))
([connectable sql-params]
(rs/execute! connectable sql-params {}))
2019-03-31 06:13:01 +00:00
([connectable sql-params opts]
2019-03-31 23:54:34 +00:00
(rs/execute! connectable sql-params opts)))
2019-03-31 06:13:01 +00:00
(defn execute-one!
""
2019-03-31 23:54:34 +00:00
([stmt]
(rs/execute-one! stmt [] {}))
([connectable sql-params]
(rs/execute-one! connectable sql-params {}))
2019-03-31 06:13:01 +00:00
([connectable sql-params opts]
2019-03-31 23:54:34 +00:00
(rs/execute-one! connectable sql-params opts)))
(defmacro with-transaction
[[sym connectable opts] & body]
`(p/-transact ~connectable (fn [~sym] ~@body) ~opts))
(defn insert!
""
([connectable table key-map]
(rs/execute! connectable
(sql/for-insert table key-map {})
{:return-keys true}))
([connectable table key-map opts]
(rs/execute! connectable
(sql/for-insert table key-map opts)
(merge {:return-keys true} opts))))
(defn insert-multi!
""
([connectable table cols rows]
(rs/execute! connectable
(sql/for-insert-multi table cols rows {})
{:return-keys true}))
([connectable table cols rows opts]
(rs/execute! connectable
(sql/for-insert-multi table cols rows opts)
(merge {:return-keys true} opts))))
(defn find-by-keys
""
([connectable table key-map]
(rs/execute! connectable (sql/for-query table key-map {}) {}))
([connectable table key-map opts]
(rs/execute! connectable (sql/for-query table key-map opts) opts)))
(defn get-by-id
""
([connectable table pk]
(rs/execute-one! connectable (sql/for-query table {:id pk} {}) {}))
([connectable table pk opts]
(rs/execute-one! connectable (sql/for-query table {:id pk} opts) opts))
([connectable table pk pk-name opts]
(rs/execute-one! connectable (sql/for-query table {pk-name pk} opts) opts)))
(defn update!
""
([connectable table key-map where-params]
(rs/execute! connectable (sql/for-update table key-map where-params {}) {}))
([connectable table key-map where-params opts]
(rs/execute! connectable (sql/for-update table key-map where-params opts) opts)))
(defn delete!
""
([connectable table where-params]
(rs/execute! connectable (sql/for-delete table where-params {}) {}))
([connectable table where-params opts]
(rs/execute! connectable (sql/for-delete table where-params opts) opts)))