database inserts.
This commit is contained in:
@@ -17,7 +17,8 @@
|
|||||||
;; https://mvnrepository.com/artifact/postgresql/postgresql
|
;; https://mvnrepository.com/artifact/postgresql/postgresql
|
||||||
[postgresql/postgresql "9.3-1102.jdbc41"]
|
[postgresql/postgresql "9.3-1102.jdbc41"]
|
||||||
[cljs-http "0.1.44"]
|
[cljs-http "0.1.44"]
|
||||||
[org.clojure/core.async "0.3.465"]]
|
[org.clojure/core.async "0.3.465"]
|
||||||
|
[fogus/ring-edn "0.3.0"]]
|
||||||
:plugins [[lein-ring "0.9.7"]
|
:plugins [[lein-ring "0.9.7"]
|
||||||
[lein-cljsbuild "1.1.5"]]
|
[lein-cljsbuild "1.1.5"]]
|
||||||
:clean-targets ^{:protect false} ["resources/public/js/compiled" "target"]
|
:clean-targets ^{:protect false} ["resources/public/js/compiled" "target"]
|
||||||
|
|||||||
@@ -2,15 +2,22 @@
|
|||||||
(:require [compojure.core :refer :all]
|
(:require [compojure.core :refer :all]
|
||||||
[compojure.route :as route]
|
[compojure.route :as route]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
|
[clojure.string :as str]
|
||||||
[auto-ap.parse :as parse]
|
[auto-ap.parse :as parse]
|
||||||
[ring.middleware.multipart-params :as mp]
|
[ring.middleware.multipart-params :as mp]
|
||||||
[ring.util.response :as response]
|
[ring.util.response :as response]
|
||||||
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
|
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
|
||||||
[ring.middleware.reload :refer [wrap-reload]]
|
[ring.middleware.reload :refer [wrap-reload]]
|
||||||
[ring.middleware.json :refer [wrap-json-response]]
|
[ring.middleware.json :refer [wrap-json-response]]
|
||||||
|
[ring.middleware.edn :refer [wrap-edn-params]]
|
||||||
[clojure.java.jdbc :as j]))
|
[clojure.java.jdbc :as j]))
|
||||||
|
|
||||||
(use 'clojure.java.jdbc)
|
(defn snake->kebab [s]
|
||||||
|
(str/replace s #"_" "-"))
|
||||||
|
|
||||||
|
(defn kebab->snake [s]
|
||||||
|
(str/replace s #"-" "_"))
|
||||||
|
|
||||||
|
|
||||||
(let [db-host "ec2-54-235-123-153.compute-1.amazonaws.com"
|
(let [db-host "ec2-54-235-123-153.compute-1.amazonaws.com"
|
||||||
db-port 5432
|
db-port 5432
|
||||||
@@ -27,10 +34,45 @@
|
|||||||
:password "de6117f8551364ac84ed31c1231941f53ab0b5470c9956f478b2025ab5a0fb8b"}))
|
:password "de6117f8551364ac84ed31c1231941f53ab0b5470c9956f478b2025ab5a0fb8b"}))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defroutes app-routes
|
(defroutes app-routes
|
||||||
(GET "/" [] (response/resource-response "index.html" {:root "public"}))
|
(GET "/" [] (response/resource-response "index.html" {:root "public"}))
|
||||||
(GET "/api/invoices" []
|
(GET "/api/invoices" []
|
||||||
(j/query db "SELECT * FROM invoices"))
|
{:status 200
|
||||||
|
:body (pr-str (map (fn [m]
|
||||||
|
(into {}
|
||||||
|
(map
|
||||||
|
(fn [[k v]]
|
||||||
|
[(keyword (snake->kebab (name k))) v])
|
||||||
|
m)))
|
||||||
|
(j/query db "SELECT * FROM invoices")))
|
||||||
|
:headers {"Content-Type" "application/edn"}})
|
||||||
|
(POST "/api/invoices" {:keys [edn-params]}
|
||||||
|
(prn edn-params )
|
||||||
|
(doto
|
||||||
|
(j/insert-multi! db
|
||||||
|
:invoices
|
||||||
|
(map
|
||||||
|
(fn [e]
|
||||||
|
(into {}
|
||||||
|
(map
|
||||||
|
(fn [[k v]]
|
||||||
|
[(keyword (kebab->snake (name k))) v])
|
||||||
|
e)))
|
||||||
|
(:rows edn-params)))
|
||||||
|
println)
|
||||||
|
|
||||||
|
{:status 200
|
||||||
|
:body (pr-str (map (fn [m]
|
||||||
|
(into {}
|
||||||
|
(map
|
||||||
|
(fn [[k v]]
|
||||||
|
[(keyword (snake->kebab (name k))) v])
|
||||||
|
m)))
|
||||||
|
(j/query db "SELECT * FROM invoices")))
|
||||||
|
:headers {"Content-Type" "application/edn"}}
|
||||||
|
)
|
||||||
(POST "/pdf-upload"
|
(POST "/pdf-upload"
|
||||||
{{ files "file"} :params :as params}
|
{{ files "file"} :params :as params}
|
||||||
(let [{:keys [filename tempfile]} files]
|
(let [{:keys [filename tempfile]} files]
|
||||||
@@ -45,4 +87,4 @@
|
|||||||
(route/not-found "Not Found"))
|
(route/not-found "Not Found"))
|
||||||
|
|
||||||
(def app
|
(def app
|
||||||
(wrap-json-response (mp/wrap-multipart-params (wrap-reload app-routes))))
|
(wrap-edn-params (mp/wrap-multipart-params (wrap-reload app-routes))))
|
||||||
|
|||||||
@@ -62,19 +62,17 @@
|
|||||||
[:th "Invoice #"]
|
[:th "Invoice #"]
|
||||||
[:th "Date"]
|
[:th "Date"]
|
||||||
[:th "Amount"]]]
|
[:th "Amount"]]]
|
||||||
[:tbody (for [{:strs [customer_identifier invoice_number date total] :as i} @invoices]
|
[:tbody (for [{:keys [customer-identifier invoice-number date total id] :as i} @invoices]
|
||||||
^{:key (str customer_identifier "-" invoice_number)}
|
^{:key (str customer-identifier "-" invoice-number "-" date "-" total "-" id)}
|
||||||
[:tr
|
[:tr
|
||||||
[:td customer_identifier]
|
[:td customer-identifier]
|
||||||
[:td invoice_number]
|
[:td invoice-number]
|
||||||
[:td date]
|
[:td date]
|
||||||
[:td total]])]]]))
|
[:td total]])]]]))
|
||||||
{:component-did-mount (fn []
|
{:component-did-mount (fn []
|
||||||
(go
|
(go
|
||||||
(->> (<! (http/get "/api/invoices"))
|
(->> (<! (http/get "/api/invoices"))
|
||||||
:body
|
:body
|
||||||
(.parse js/JSON )
|
|
||||||
(js->clj)
|
|
||||||
(conj [::events/received-invoices])
|
(conj [::events/received-invoices])
|
||||||
(re-frame/dispatch))))})])
|
(re-frame/dispatch))))})])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user