mirror of
https://github.com/penpot/penpot.git
synced 2025-02-02 20:39:09 -05:00
✨ Add more flexible call flow for db interacting methods
This commit is contained in:
parent
90f7e97d5b
commit
c7f9774524
1 changed files with 37 additions and 23 deletions
|
@ -145,6 +145,10 @@
|
||||||
[v]
|
[v]
|
||||||
(instance? javax.sql.DataSource v))
|
(instance? javax.sql.DataSource v))
|
||||||
|
|
||||||
|
(defn connection?
|
||||||
|
[conn]
|
||||||
|
(instance? Connection conn))
|
||||||
|
|
||||||
(s/def ::conn some?)
|
(s/def ::conn some?)
|
||||||
(s/def ::nilable-pool (s/nilable ::pool))
|
(s/def ::nilable-pool (s/nilable ::pool))
|
||||||
(s/def ::pool pool?)
|
(s/def ::pool pool?)
|
||||||
|
@ -230,46 +234,59 @@
|
||||||
[pool]
|
[pool]
|
||||||
(jdbc/get-connection pool))
|
(jdbc/get-connection pool))
|
||||||
|
|
||||||
|
(defn- resolve-connectable
|
||||||
|
[o]
|
||||||
|
(if (connection? o)
|
||||||
|
o
|
||||||
|
(if (pool? o)
|
||||||
|
o
|
||||||
|
(or (::conn o) (::pool o)))))
|
||||||
|
|
||||||
|
|
||||||
(def ^:private default-opts
|
(def ^:private default-opts
|
||||||
{:builder-fn sql/as-kebab-maps})
|
{:builder-fn sql/as-kebab-maps})
|
||||||
|
|
||||||
(defn exec!
|
(defn exec!
|
||||||
([ds sv]
|
([ds sv]
|
||||||
(jdbc/execute! ds sv default-opts))
|
(-> (resolve-connectable ds)
|
||||||
|
(jdbc/execute! sv default-opts)))
|
||||||
([ds sv opts]
|
([ds sv opts]
|
||||||
(jdbc/execute! ds sv (merge default-opts opts))))
|
(-> (resolve-connectable ds)
|
||||||
|
(jdbc/execute! sv (merge default-opts opts)))))
|
||||||
|
|
||||||
(defn exec-one!
|
(defn exec-one!
|
||||||
([ds sv]
|
([ds sv]
|
||||||
(jdbc/execute-one! ds sv default-opts))
|
(-> (resolve-connectable ds)
|
||||||
|
(jdbc/execute-one! sv default-opts)))
|
||||||
([ds sv opts]
|
([ds sv opts]
|
||||||
(jdbc/execute-one! ds sv
|
(-> (resolve-connectable ds)
|
||||||
|
(jdbc/execute-one! sv
|
||||||
(-> (merge default-opts opts)
|
(-> (merge default-opts opts)
|
||||||
(assoc :return-keys (::return-keys? opts false))))))
|
(assoc :return-keys (::return-keys? opts false)))))))
|
||||||
|
|
||||||
(defn insert!
|
(defn insert!
|
||||||
[ds table params & {:as opts}]
|
[ds table params & {:as opts}]
|
||||||
(exec-one! ds
|
(-> (resolve-connectable ds)
|
||||||
(sql/insert table params opts)
|
(exec-one! (sql/insert table params opts)
|
||||||
(merge {::return-keys? true} opts)))
|
(merge {::return-keys? true} opts))))
|
||||||
|
|
||||||
(defn insert-multi!
|
(defn insert-multi!
|
||||||
[ds table cols rows & {:as opts}]
|
[ds table cols rows & {:as opts}]
|
||||||
(exec! ds
|
(-> (resolve-connectable ds)
|
||||||
(sql/insert-multi table cols rows opts)
|
(exec! (sql/insert-multi table cols rows opts)
|
||||||
(merge {::return-keys? true} opts)))
|
(merge {::return-keys? true} opts))))
|
||||||
|
|
||||||
(defn update!
|
(defn update!
|
||||||
[ds table params where & {:as opts}]
|
[ds table params where & {:as opts}]
|
||||||
(exec-one! ds
|
(-> (resolve-connectable ds)
|
||||||
(sql/update table params where opts)
|
(exec-one! (sql/update table params where opts)
|
||||||
(merge {::return-keys? true} opts)))
|
(merge {::return-keys? true} opts))))
|
||||||
|
|
||||||
(defn delete!
|
(defn delete!
|
||||||
[ds table params & {:as opts}]
|
[ds table params & {:as opts}]
|
||||||
(exec-one! ds
|
(-> (resolve-connectable ds)
|
||||||
(sql/delete table params opts)
|
(exec-one! (sql/delete table params opts)
|
||||||
(merge {::return-keys? true} opts)))
|
(merge {::return-keys? true} opts))))
|
||||||
|
|
||||||
(defn is-row-deleted?
|
(defn is-row-deleted?
|
||||||
[{:keys [deleted-at]}]
|
[{:keys [deleted-at]}]
|
||||||
|
@ -301,7 +318,8 @@
|
||||||
|
|
||||||
(defn plan
|
(defn plan
|
||||||
[ds sql]
|
[ds sql]
|
||||||
(jdbc/plan ds sql sql/default-opts))
|
(-> (resolve-connectable ds)
|
||||||
|
(jdbc/plan sql sql/default-opts)))
|
||||||
|
|
||||||
(defn get-by-id
|
(defn get-by-id
|
||||||
[ds table id & {:as opts}]
|
[ds table id & {:as opts}]
|
||||||
|
@ -371,10 +389,6 @@
|
||||||
[data]
|
[data]
|
||||||
(org.postgresql.util.PGInterval. ^String data))
|
(org.postgresql.util.PGInterval. ^String data))
|
||||||
|
|
||||||
(defn connection?
|
|
||||||
[conn]
|
|
||||||
(instance? Connection conn))
|
|
||||||
|
|
||||||
(defn savepoint
|
(defn savepoint
|
||||||
([^Connection conn]
|
([^Connection conn]
|
||||||
(.setSavepoint conn))
|
(.setSavepoint conn))
|
||||||
|
|
Loading…
Add table
Reference in a new issue