From 03dd882da49ef3ba0e6265508aa5488dbecb75d2 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 17 May 2018 20:06:46 -0700 Subject: [PATCH] All data on checks are now set up. --- .../1526611275-DOWN-move-address-to-data.sql | 15 +++++++++ .../1526611275-UP-move-address-to-data.sql | 18 ++++++++++ src/clj/auto_ap/db/companies.clj | 1 - src/clj/auto_ap/db/vendors.clj | 33 +++++++++++++++---- src/clj/auto_ap/parse.clj | 2 +- src/clj/auto_ap/routes/checks.clj | 4 +-- src/cljc/auto_ap/entities/vendors.cljc | 17 +++------- .../auto_ap/views/pages/admin/vendors.cljs | 21 ++++++------ 8 files changed, 79 insertions(+), 32 deletions(-) create mode 100644 migrator/migrations/1526611275-DOWN-move-address-to-data.sql create mode 100644 migrator/migrations/1526611275-UP-move-address-to-data.sql diff --git a/migrator/migrations/1526611275-DOWN-move-address-to-data.sql b/migrator/migrations/1526611275-DOWN-move-address-to-data.sql new file mode 100644 index 00000000..c645ccd6 --- /dev/null +++ b/migrator/migrations/1526611275-DOWN-move-address-to-data.sql @@ -0,0 +1,15 @@ +-- 1526611275 DOWN move-address-to-data +alter table vendors +add column address1 varchar (255); + +alter table vendors +add column address2 varchar (255); + +alter table vendors +add column city varchar (255); + +alter table vendors +add column state varchar (255); + +alter table vendors +add column zip varchar (255); diff --git a/migrator/migrations/1526611275-UP-move-address-to-data.sql b/migrator/migrations/1526611275-UP-move-address-to-data.sql new file mode 100644 index 00000000..30a52c1a --- /dev/null +++ b/migrator/migrations/1526611275-UP-move-address-to-data.sql @@ -0,0 +1,18 @@ +-- 1526611275 UP move-address-to-data +UPDATE vendors v +set data = CONCAT('{ ' +, ' :address { ' +, ' :street1 "' , v.address1 , '" ' +, ' :street2 "' , v.address2 , '" ' +, ' :city "' , v.city , '" ' +, ' :state "' , v.state , '" ' +, ' :zip "' , v.zip , '" ' +, ' }' +, ' }'); + + +alter table vendors drop column address1; +alter table vendors drop column address2; +alter table vendors drop column city; +alter table vendors drop column state; +alter table vendors drop column zip; diff --git a/src/clj/auto_ap/db/companies.clj b/src/clj/auto_ap/db/companies.clj index c111427d..adcd15aa 100644 --- a/src/clj/auto_ap/db/companies.clj +++ b/src/clj/auto_ap/db/companies.clj @@ -5,7 +5,6 @@ [clojure.java.jdbc :as j] [honeysql.core :as sql] [honeysql.helpers :as helpers])) - (def all-fields #{:name :email :data :id}) (def base-query (sql/build :select :* diff --git a/src/clj/auto_ap/db/vendors.clj b/src/clj/auto_ap/db/vendors.clj index 8c5fb789..2f4e0aee 100644 --- a/src/clj/auto_ap/db/vendors.clj +++ b/src/clj/auto_ap/db/vendors.clj @@ -7,24 +7,45 @@ [honeysql.helpers :as helpers] [honeysql.format :as f])) +(defn fields->data [x] + (-> x + (assoc-in [:data :address] (:address x)) + (dissoc :address))) + +(def all-fields [:name + :code + :id + :invoice-reminder-schedule + :primary-contact + :primary-email + :primary-phone + :secondary-contact + :secondary-email + :secondary-phone + :data]) (defn unparse [x] - (-> x - (select-keys entities/all-keys))) + (-> (fields->data x) + (select-keys all-fields) + (clj->db))) (def base-query (sql/build :select :* :from :vendors)) +(defn data->fields [x] + (-> x + (merge (:data x)) + (dissoc :data))) (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] - (println data) (-> (sql/build :update :vendors :set (unparse data) diff --git a/src/clj/auto_ap/parse.clj b/src/clj/auto_ap/parse.clj index 421784c0..e13e07d9 100644 --- a/src/clj/auto_ap/parse.clj +++ b/src/clj/auto_ap/parse.clj @@ -71,7 +71,7 @@ (println companies) (->> companies (map (fn [company] - (if-let [matches (:matches (:data company))] + (if-let [matches (:matches company)] [company (apply min (map #(m/jaccard (.toLowerCase company-identifier) %) matches))] [company 1]))) (filter #(< (second %) 0.25)) diff --git a/src/clj/auto_ap/routes/checks.clj b/src/clj/auto_ap/routes/checks.clj index a8875053..10b013d2 100644 --- a/src/clj/auto_ap/routes/checks.clj +++ b/src/clj/auto_ap/routes/checks.clj @@ -86,8 +86,8 @@ [[:cell] [:cell {:colspan 5} [:paragraph vendor-name "\n" - (:address1 vendor) "\n" - (:city vendor) ", " (:state vendor) " " (:zip vendor)]] + (:street1 (:address vendor)) "\n" + (:city (:address vendor)) ", " (:state (:address vendor)) " " (:zip (:address vendor))]] [:cell {:align :right} "Paid to:\n" "Amount:\n" diff --git a/src/cljc/auto_ap/entities/vendors.cljc b/src/cljc/auto_ap/entities/vendors.cljc index 6da2caa2..eeebd761 100644 --- a/src/cljc/auto_ap/entities/vendors.cljc +++ b/src/cljc/auto_ap/entities/vendors.cljc @@ -1,6 +1,7 @@ (ns auto-ap.entities.vendors (:require [clojure.spec.alpha :as s] - [clojure.string :as str])) + [clojure.string :as str] + [auto-ap.entities.address :as address])) (def email-regex #"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$") (s/def ::id int) @@ -14,7 +15,6 @@ :is-empty #(= % ""))))) (s/def ::phone (s/nilable string?)) -(s/def ::data (s/nilable string?)) (s/def ::invoice-reminder-schedule (s/nilable #{"Weekly" "Never" nil})) (s/def ::primary-contact ::identifier) (s/def ::primary-email ::email) @@ -23,13 +23,9 @@ (s/def ::secondary-contact ::identifier) (s/def ::secondary-email ::email) (s/def ::secondary-phone ::phone) +(s/def ::address ::address/address) (s/def ::code (s/nilable string?)) -(s/def ::address1 (s/nilable string?)) -(s/def ::address2 (s/nilable string?)) -(s/def ::city (s/nilable string?)) -(s/def ::state (s/nilable string?)) -(s/def ::zip (s/nilable string?)) (s/def ::vendor (s/keys :req-un [::name] :opt-un [::code @@ -41,11 +37,8 @@ ::secondary-contact ::secondary-email ::secondary-phone - ::address1 - ::address2 - ::city - ::state - ::zip])) + ::address + ])) (def vendor-spec (apply hash-map (drop 1 (s/form ::vendor)))) diff --git a/src/cljs/auto_ap/views/pages/admin/vendors.cljs b/src/cljs/auto_ap/views/pages/admin/vendors.cljs index c0fbd6ec..b451dedb 100644 --- a/src/cljs/auto_ap/views/pages/admin/vendors.cljs +++ b/src/cljs/auto_ap/views/pages/admin/vendors.cljs @@ -6,6 +6,7 @@ [auto-ap.subs :as subs] [auto-ap.events.admin.vendors :as events] [auto-ap.entities.vendors :as entity] + [auto-ap.entities.address :as address] [clojure.spec.alpha :as s] [auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field]] [cljs.reader :as edn] @@ -98,8 +99,8 @@ [bind-field [:input.input.is-expanded {:type "text" :placeholder "1700 Pennsylvania Ave" - :field :address1 - :spec ::entity/address1 + :field [:address :street1] + :spec ::address/street1 :event ::events/change :subscription editing-vendor}]]]] @@ -109,8 +110,8 @@ [bind-field [:input.input.is-expanded {:type "text" :placeholder "Suite 400" - :field :address2 - :spec ::entity/address2 + :field [:address :street2] + :spec ::address/street2 :event ::events/change :subscription editing-vendor}]]]] @@ -121,8 +122,8 @@ [bind-field [:input.input.is-expanded {:type "text" :placeholder "Cupertino" - :field :city - :spec ::entity/city + :field [:address :city] + :spec ::address/city :event ::events/change :subscription editing-vendor}]]] [:div.control @@ -130,16 +131,16 @@ [bind-field [:input.input {:type "text" :placeholder "CA" - :field :state - :spec ::entity/state + :field [:address :state] + :spec ::address/state :event ::events/change :subscription editing-vendor}]]] [:div.control [:p.help "Zip"] [bind-field [:input.input {:type "text" - :field :zip - :spec ::entity/zip + :field [:address :zip] + :spec ::address/zip :event ::events/change :subscription editing-vendor :placeholder "95014"}]]]]