diff options
author | scgilardi <scgilardi@gmail.com> | 2009-01-19 03:11:11 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2009-01-19 03:11:11 +0000 |
commit | 0c2cd5b9efff46506732bbd86ad9eca16b3e5a6e (patch) | |
tree | 22f02009fffd70eeae1ea0b169a37e20d91e1306 /src/clojure/contrib/sql/internal.clj | |
parent | a5776b8d9e426b87d4e5b941f7f4b195dc85eb08 (diff) |
sql: restore rollback flag to its default after transaction completes
Diffstat (limited to 'src/clojure/contrib/sql/internal.clj')
-rw-r--r-- | src/clojure/contrib/sql/internal.clj | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/clojure/contrib/sql/internal.clj b/src/clojure/contrib/sql/internal.clj index ff1d7ad2..207ccd3b 100644 --- a/src/clojure/contrib/sql/internal.clj +++ b/src/clojure/contrib/sql/internal.clj @@ -38,17 +38,12 @@ (or (:connection *db*) (throw (Exception. "no current database connection")))) -(defn set-rollback-only* - "Marks the current stack of nested transactions such that they will - rollback rather than commit when complete" - [] - (update-in *db* [:rollback-only] swap! (fn [_] true))) - -(defn is-rollback-only* - "Returns true if the current stack of nested transactions will rollback - rather than commit when complete" - [] - @(:rollback-only *db*)) +(defn rollback-only + "Accessor for the rollback-only flag on the current connection" + ([] + @(:rollback-only *db*)) + ([val] + (update-in *db* [:rollback-only] swap! (fn [_] val)))) (defn with-connection* "Evaluates func in the context of a new connection to a database then @@ -86,7 +81,7 @@ (try (let [value (func)] (when outermost - (if (is-rollback-only*) + (if (rollback-only) (.rollback con) (.commit con))) value) @@ -100,6 +95,7 @@ (throw e))) (finally (when outermost + (rollback-only false) (.setAutoCommit con auto-commit)))))))) (defn with-query-results* |