From 70766c6d4bcdc3cb21b4e4d39d08e30ee867297a Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 14 May 2018 09:48:44 -0700 Subject: [PATCH] now bank accounts exist. --- .../1526315524-DOWN-add-bank-accounts.sql | 2 ++ .../1526315524-UP-add-bank-accounts.sql | 2 ++ src/clj/auto_ap/db/companies.clj | 19 +++++++++++++++---- src/clj/auto_ap/graphql.clj | 8 +++++++- src/cljs/auto_ap/events.cljs | 2 +- .../auto_ap/views/pages/admin/companies.cljs | 7 +++++++ 6 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 migrator/migrations/1526315524-DOWN-add-bank-accounts.sql create mode 100644 migrator/migrations/1526315524-UP-add-bank-accounts.sql diff --git a/migrator/migrations/1526315524-DOWN-add-bank-accounts.sql b/migrator/migrations/1526315524-DOWN-add-bank-accounts.sql new file mode 100644 index 00000000..5b756998 --- /dev/null +++ b/migrator/migrations/1526315524-DOWN-add-bank-accounts.sql @@ -0,0 +1,2 @@ +-- 1526315524 DOWN add-bank-accounts +update companies set data = ''; diff --git a/migrator/migrations/1526315524-UP-add-bank-accounts.sql b/migrator/migrations/1526315524-UP-add-bank-accounts.sql new file mode 100644 index 00000000..f428202b --- /dev/null +++ b/migrator/migrations/1526315524-UP-add-bank-accounts.sql @@ -0,0 +1,2 @@ +-- 1526315524 UP add-bank-accounts +update companies set data = '{:bank-accounts [{:number "123456789" :id 1 :check-number 6789} {:number "987654321" :id 2 :check-number 1234}]}'; diff --git a/src/clj/auto_ap/db/companies.clj b/src/clj/auto_ap/db/companies.clj index e7f3d35b..fd843af6 100644 --- a/src/clj/auto_ap/db/companies.clj +++ b/src/clj/auto_ap/db/companies.clj @@ -9,18 +9,29 @@ (def base-query (sql/build :select :* :from :companies)) +(defn data->fields [x] + (-> x + (merge (:data x)) + (dissoc :data))) + +(defn fields->data [x] + (-> x + (assoc-in [:data :bank-accounts] (:bank-accounts x)) + (dissoc :bank-accounts))) (defn get-all [] - (query base-query)) + (map data->fields (query base-query))) (defn get-by-id [id] - (first (query (-> base-query - (helpers/merge-where [:= :id id]))))) + (first (map data->fields + (query (-> base-query + (helpers/merge-where [:= :id id])))))) + (defn upsert [id data] (prn (clj->db (select-keys data entity/all-keys))) (-> (sql/build :update :companies - :set (clj->db (select-keys data entity/all-keys )) + :set (clj->db (select-keys (fields->data data) entity/all-keys )) :where [:= :id (if (int? id) id (Integer/parseInt id))]) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 0a812a53..7246c11d 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -26,7 +26,13 @@ :company {:fields {:id {:type 'Int} :name {:type 'String} - :email {:type 'String}}} + :email {:type 'String} + :bank_accounts {:type '(list :bank_account)}}} + + :bank_account + {:fields {:id {:type 'Int} + :number {:type 'String} + :check_number {:type 'Int}}} :vendor {:fields {:id {:type 'Int} :name {:type 'String} diff --git a/src/cljs/auto_ap/events.cljs b/src/cljs/auto_ap/events.cljs index 8662e5e2..88656219 100644 --- a/src/cljs/auto_ap/events.cljs +++ b/src/cljs/auto_ap/events.cljs @@ -21,7 +21,7 @@ :user token) :graphql {:token token :query-obj {:venia/queries [[:company - [:id :name]]]} + [:id :name [:bank-accounts [:id :number :check-number]]]]]} :on-success [::received-companies]}})))) diff --git a/src/cljs/auto_ap/views/pages/admin/companies.cljs b/src/cljs/auto_ap/views/pages/admin/companies.cljs index 9a1b7af3..a88e755b 100644 --- a/src/cljs/auto_ap/views/pages/admin/companies.cljs +++ b/src/cljs/auto_ap/views/pages/admin/companies.cljs @@ -65,6 +65,13 @@ :spec ::entity/name :event ::events/change :subscription editing-company}]]]] + + [horizontal-field + [:label.label "Bank Accounts"] + [:div.control + [:ul + (for [{:keys [number check-number id]} (:bank-accounts editing-company)] + ^{:key id} [:li number " - " check-number])]]] (when (:saving? editing-company) [:div.is-overlay {:style {"backgroundColor" "rgba(150,150,150, 0.5)"}}])]