diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 00000000..913feab6 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,8 @@ +version: '2' +services: + app: + ports: + - 80:3000 + restart: always + database: + restart: always diff --git a/migrator/migrations/1522800061-DOWN.sql b/migrator/migrations/1522800061-DOWN.sql new file mode 100644 index 00000000..05e47eb9 --- /dev/null +++ b/migrator/migrations/1522800061-DOWN.sql @@ -0,0 +1 @@ +DROP TABLE companies (id serial primary key, name varchar(255), data text); diff --git a/migrator/migrations/1522800061-UP.sql b/migrator/migrations/1522800061-UP.sql new file mode 100644 index 00000000..05048b76 --- /dev/null +++ b/migrator/migrations/1522800061-UP.sql @@ -0,0 +1,8 @@ +-- 1522800061 UP +CREATE TABLE companies (id serial primary key, name varchar(255), data text); + +insert into companies (name, data) values ('Campbell Brewing Company', '{:matches ["campbell brewing company" "campbell brewery company" "campbell brewing"]}'); + +insert into companies (name, data) values ('Brown Chicken Brown Cow', '{:matches ["brown chicken brown cow"]}'); + +insert into companies (name, data) values ('Naschmarkt Restaurant', '{:matches ["naschmarkt" "naschmarkt restaurant"]}'); diff --git a/migrator/package.json b/migrator/package.json index f063a973..8b77a965 100644 --- a/migrator/package.json +++ b/migrator/package.json @@ -4,18 +4,15 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "db-migrate": "db-migrate", + "db-rollback": "db-rollback", + "db-create": "db-create", + "db-status": "db-status" }, "author": "Bryce Covert ", "license": "ISC", "dependencies": { "db-migrator": "^2.2.0", "pg": "^7.4.0" - }, - "scripts": { - "db-migrate": "db-migrate", - "db-rollback": "db-rollback", - "db-create": "db-create", - "db-status": "db-status" } } diff --git a/resources/public alias b/resources/public alias new file mode 100644 index 00000000..760be9e8 Binary files /dev/null and b/resources/public alias differ diff --git a/src/clj/auto_ap/db/companies.clj b/src/clj/auto_ap/db/companies.clj index faf83a1f..3728060e 100644 --- a/src/clj/auto_ap/db/companies.clj +++ b/src/clj/auto_ap/db/companies.clj @@ -1,9 +1,10 @@ -(ns auto-ap.db.companies) +(ns auto-ap.db.companies + (:require [clojure.java.jdbc :as j] + [auto-ap.db.utils :refer [clj->db db->clj get-conn]] + [clojure.edn :as edn])) (defn get-all [] - [{:name "Campbell Brewing Company" - :matches ["campbell brewing company" "campbell brewery company" "campbell brewing"]} - {:name "Brown Chicken Brown Cow" - :matches ["brown chicken brown cow"]} - {:name "Naschmarkt Restaurant" - :matches ["naschmarkt" "naschmarkt restaurant"]}]) + (->> (j/query (get-conn) "SELECT * FROM companies") + (map db->clj ) + (map (fn [{:keys [data] :as x}] + (merge x (edn/read-string data)))))) diff --git a/src/clj/auto_ap/handler.clj b/src/clj/auto_ap/handler.clj index aa87a5ec..dbbcc7a9 100644 --- a/src/clj/auto_ap/handler.clj +++ b/src/clj/auto_ap/handler.clj @@ -79,6 +79,11 @@ (routes (ANY "*" [] (response/resource-response "index.html" {:root "public"})))) (defroutes api-routes + + (GET "/api/companies" [] + {:status 200 + :body (pr-str (companies/get-all)) + :headers {"Content-Type" "application/edn"}}) (GET "/api/invoices" [] {:status 200 @@ -119,6 +124,7 @@ (let [{:keys [filename tempfile]} files existing-invoices (invoices/get-all) companies (companies/get-all)] + (println companies) (invoices/insert-multi! (for [{:keys [total date invoice-number customer-identifier vendor] :as row} (parse/parse-file (.getPath tempfile) filename)] diff --git a/src/cljs/auto_ap/effects.cljs b/src/cljs/auto_ap/effects.cljs index 46fd8f62..6c7c186c 100644 --- a/src/cljs/auto_ap/effects.cljs +++ b/src/cljs/auto_ap/effects.cljs @@ -26,6 +26,7 @@ (let [headers (if token (assoc headers "Authorization" (str "Token " token)) headers)] + (println headers) (->> (http/request {:method method :body body :headers headers diff --git a/src/cljs/auto_ap/events.cljs b/src/cljs/auto_ap/events.cljs index 86bc477a..24a02cb6 100644 --- a/src/cljs/auto_ap/events.cljs +++ b/src/cljs/auto_ap/events.cljs @@ -16,17 +16,30 @@ :user token)} {:db (assoc db/default-db :active-page handler - :user token)})))) + :user token) + :http {:method :get + :token token + :uri (str "/api/companies") + :on-success [::received-companies]}})))) (re-frame/reg-event-db ::toggle-menu (fn [db [_ which]] (update-in db [:menu which :active?] #(not %)))) -(re-frame/reg-event-db +(re-frame/reg-event-fx ::logged-in - (fn [db [_ token user]] - (assoc db :user (assoc user :token token)))) + (fn [{:keys [db]} [_ token user]] + {:http {:method :get + :token token + :uri (str "/api/companies") + :on-success [::received-companies]} + :db (assoc db :user (assoc user :token token))})) + +(re-frame/reg-event-db + ::received-companies + (fn [db [_ companies]] + (assoc db :companies companies))) (re-frame/reg-event-db ::swap-company diff --git a/src/cljs/auto_ap/subs.cljs b/src/cljs/auto_ap/subs.cljs index be127340..cb7df789 100644 --- a/src/cljs/auto_ap/subs.cljs +++ b/src/cljs/auto_ap/subs.cljs @@ -12,8 +12,7 @@ ::companies (fn [db] (when (:user db) - (let [{:strs [companies] :as x} (js->clj (.parse js/JSON (base64/decodeString (second (str/split (:user db) #"\.")))))] - (map (fn [c] {:name c}) companies))))) + (:companies db)))) (re-frame/reg-sub ::menu diff --git a/src/cljs/auto_ap/views/main.cljs b/src/cljs/auto_ap/views/main.cljs index d88d9047..8ea0b113 100644 --- a/src/cljs/auto_ap/views/main.cljs +++ b/src/cljs/auto_ap/views/main.cljs @@ -27,6 +27,7 @@ [:a {:class "navbar-link login" :on-click (fn [e] (re-frame/dispatch [::events/toggle-menu :account]))} (:name @user)] [:div {:class "navbar-dropdown"} [:a {:class "navbar-item"} "My profile"] + [:a {:class "navbar-item"} "Administration"] [:hr {:class "navbar-divider"}] [:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]] [:a.navbar-item {:href login-url} "Login"])]]))