diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn index a2bc5ee81..f8c18fcd6 100644 --- a/.clj-kondo/config.edn +++ b/.clj-kondo/config.edn @@ -6,7 +6,6 @@ rumext.v2/defc clojure.core/defn rumext.v2/fnc clojure.core/fn app.common.data/export clojure.core/def - app.db/with-atomic clojure.core/with-open app.common.data.macros/get-in clojure.core/get-in app.common.data.macros/with-open clojure.core/with-open app.common.data.macros/select-keys clojure.core/select-keys @@ -18,6 +17,7 @@ potok.core/reify hooks.export/potok-reify app.util.services/defmethod hooks.export/service-defmethod app.common.record/defrecord hooks.export/penpot-defrecord + app.db/with-atomic hooks.export/penpot-with-atomic }} :output diff --git a/.clj-kondo/hooks/export.clj b/.clj-kondo/hooks/export.clj index 9486ed67c..71a837597 100644 --- a/.clj-kondo/hooks/export.clj +++ b/.clj-kondo/hooks/export.clj @@ -39,6 +39,20 @@ other))] {:node result}))) +(defn penpot-with-atomic + [{:keys [node]}] + (let [[_ params & other] (:children node) + + result (if (api/vector-node? params) + (api/list-node + (into [(api/token-node (symbol "clojure.core" "with-open")) params] other)) + (api/list-node + (into [(api/token-node (symbol "clojure.core" "with-open")) + (api/vector-node [params params])] + other))) + + ] + {:node result})) (defn penpot-defrecord [{:keys [:node]}] diff --git a/backend/src/app/db.clj b/backend/src/app/db.clj index 8beaa78ec..d148ccc46 100644 --- a/backend/src/app/db.clj +++ b/backend/src/app/db.clj @@ -218,7 +218,13 @@ (defmacro with-atomic [& args] - `(jdbc/with-transaction ~@args)) + (if (symbol? (first args)) + (let [cfgs (first args) + body (rest args)] + `(jdbc/with-transaction [conn# (::pool ~cfgs)] + (let [~cfgs (assoc ~cfgs ::conn conn#)] + ~@body))) + `(jdbc/with-transaction ~@args))) (defn open [pool]