48 lines
1.8 KiB
Clojure
48 lines
1.8 KiB
Clojure
(ns auto-ap.handler
|
|
(:require [compojure.core :refer :all]
|
|
[compojure.route :as route]
|
|
[clojure.java.io :as io]
|
|
[clojure.string :as str]
|
|
[auto-ap.db.invoices :as invoices]
|
|
[auto-ap.parse :as parse]
|
|
[ring.middleware.multipart-params :as mp]
|
|
[ring.util.response :as response]
|
|
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
|
|
[ring.middleware.reload :refer [wrap-reload]]
|
|
[ring.middleware.json :refer [wrap-json-response]]
|
|
[ring.middleware.edn :refer [wrap-edn-params]]
|
|
[clojure.java.jdbc :as j]))
|
|
|
|
(defroutes app-routes
|
|
(GET "/" [] (response/resource-response "index.html" {:root "public"}))
|
|
(GET "/api/invoices" []
|
|
{:status 200
|
|
:body (pr-str (invoices/get-all))
|
|
:headers {"Content-Type" "application/edn"}})
|
|
|
|
(GET "/api/invoices/pending" []
|
|
{:status 200
|
|
:body (pr-str (invoices/get-pending))
|
|
:headers {"Content-Type" "application/edn"}})
|
|
|
|
(POST "/api/invoices" {:keys [edn-params]}
|
|
(invoices/insert-multi! (:rows edn-params))
|
|
{:status 200
|
|
:body (pr-str (invoices/get-all))
|
|
:headers {"Content-Type" "application/edn"}})
|
|
(POST "/pdf-upload"
|
|
{{ files "file"} :params :as params}
|
|
(let [{:keys [filename tempfile]} files]
|
|
(for [{:keys [total date invoice-number customer-identifier]}
|
|
(parse/parse-file (.getPath tempfile))]
|
|
{"customer-identifier" customer-identifier
|
|
"invoice-number" invoice-number
|
|
"date" date
|
|
"total" total})))
|
|
(route/resources "/")
|
|
(routes (ANY "*" [] (response/resource-response "index.html" {:root "public"})))
|
|
(route/not-found "Not Found"))
|
|
|
|
(def app
|
|
(wrap-edn-params (mp/wrap-multipart-params (wrap-reload app-routes))))
|