using transactions FTW
This commit is contained in:
@@ -42,17 +42,21 @@
|
||||
(defn merge-data [{:keys [data] :as x}]
|
||||
(merge x (edn/read-string data)))
|
||||
|
||||
(def ^{:dynamic true} current-conn nil)
|
||||
|
||||
(defn get-conn []
|
||||
(let [db-host (:server (:db env))
|
||||
db-port 5432
|
||||
db-name "autoap"]
|
||||
{:classname "org.postgresql.Driver" ; must be in classpath
|
||||
#_#_:ssl true
|
||||
#_#_:sslfactory "org.postgresql.ssl.NonValidatingFactory"
|
||||
:subprotocol "postgresql"
|
||||
:subname (str "//" db-host ":" db-port "/" db-name)
|
||||
:user "ap"
|
||||
:password "fifteen-invoices-imported!"}))
|
||||
(if current-conn
|
||||
current-conn
|
||||
(let [db-host (:server (:db env))
|
||||
db-port 5432
|
||||
db-name "autoap"]
|
||||
{:classname "org.postgresql.Driver" ; must be in classpath
|
||||
#_#_:ssl true
|
||||
#_#_:sslfactory "org.postgresql.ssl.NonValidatingFactory"
|
||||
:subprotocol "postgresql"
|
||||
:subname (str "//" db-host ":" db-port "/" db-name)
|
||||
:user "ap"
|
||||
:password "fifteen-invoices-imported!"})))
|
||||
|
||||
(defn query [q]
|
||||
(let [formatted (sql/format q)]
|
||||
|
||||
@@ -7,9 +7,11 @@
|
||||
[auto-ap.routes.graphql :as graphql]
|
||||
[auto-ap.routes.vendors :as vendors]
|
||||
[auto-ap.routes.checks :as checks]
|
||||
[auto-ap.db.utils :as u]
|
||||
[buddy.auth.backends.token :refer [jws-backend]]
|
||||
[buddy.auth.middleware :refer [wrap-authentication
|
||||
wrap-authorization]]
|
||||
[clojure.java.jdbc :as jdbc]
|
||||
[compojure.core :refer :all]
|
||||
[compojure.route :as route]
|
||||
[config.core :refer [env]]
|
||||
@@ -44,8 +46,19 @@
|
||||
api-routes
|
||||
static-routes))
|
||||
|
||||
(defn wrap-transaction [handler]
|
||||
(fn [request]
|
||||
(jdbc/with-db-transaction [t (u/get-conn)]
|
||||
(binding [u/current-conn t]
|
||||
(try
|
||||
(handler (assoc request :db-conn t))
|
||||
(catch Exception e
|
||||
(jdbc/db-set-rollback-only! t)
|
||||
(throw e)))))))
|
||||
|
||||
(def app
|
||||
(-> #'app-routes
|
||||
(wrap-transaction)
|
||||
(wrap-authorization auth-backend)
|
||||
(wrap-authentication auth-backend)
|
||||
(wrap-reload)
|
||||
|
||||
@@ -10,17 +10,14 @@
|
||||
[goog.string :as gstring]))
|
||||
|
||||
;; TODO show busy
|
||||
;; TODO only when one company selected
|
||||
;; TODO partial payments
|
||||
;; TODO invoice status = paid when complete
|
||||
;; TODO performance
|
||||
;; TODO check numbers
|
||||
;; TODO psql transactions
|
||||
;; TODO refactor graphql
|
||||
|
||||
|
||||
|
||||
|
||||
(defn query [params]
|
||||
{:venia/queries [[:invoice_page
|
||||
(assoc params
|
||||
|
||||
Reference in New Issue
Block a user