not using namespaced keys, due to graphql

This commit is contained in:
Bryce Covert
2018-04-10 10:51:21 -07:00
parent 4a0275f024
commit 53905c317b
19 changed files with 114 additions and 109 deletions

View File

@@ -1,26 +1,16 @@
(ns auto-ap.db.companies
(:require [auto-ap.db.utils :refer [assign-namespace clj->db db->clj
get-conn]]
(:require [auto-ap.db.utils :refer [clj->db db->clj get-conn]]
[auto-ap.entities.companies :as entity]
[clojure.edn :as edn]
[clojure.java.jdbc :as j]))
(defn merge-data [{:keys [::entity/data] :as x}]
(merge x (edn/read-string data)))
(defn parse [x]
(-> x
(db->clj)
(assign-namespace "auto-ap.entities.companies")
merge-data
))
(db->clj x))
(defn get-all []
(->> (j/query (get-conn) "SELECT * FROM companies")
(map parse)
))
(map parse)))
(defn upsert [id data]
(j/update! (get-conn) :companies (clj->db data) ["id = ?" (Integer/parseInt id)] )

View File

@@ -5,8 +5,7 @@
[auto-ap.db.vendors :as vendors]
[auto-ap.entities.companies :as company]
[auto-ap.entities.vendors :as vendor]
[clojure.java.jdbc :as j]
[aggregate.core :as agg]))
[clojure.java.jdbc :as j]))
(defn insert-multi! [rows]
(j/insert-multi! (get-conn)
@@ -15,13 +14,14 @@
(defn with-relations [results]
(let [companies (reduce
#(assoc %1 (::company/id %2) %2)
#(assoc %1 (:id %2) %2)
{}
(companies/get-all))
vendors (reduce
#(assoc %1 (::vendor/id %2) %2)
#(assoc %1 (:id %2) %2)
{}
(vendors/get-all))]
(println companies vendors)
(->> results
(map #(assoc % :vendor (vendors (:vendor-id %))))
(map #(assoc % :company (companies (:company-id %)))))))
@@ -56,8 +56,8 @@
(for [{:keys [total date invoice-number customer-identifier vendor-code] :as row} parsed-invoices]
(do
(dissoc (assoc row
:company-id (::company/id (parse/best-match companies customer-identifier))
:vendor-id (::vendor/id (first (filter #(= (::vendor/code %) vendor-code) vendors)))
:company-id (:id (parse/best-match companies customer-identifier))
:vendor-id (:id (first (filter #(= (:code %) vendor-code) vendors)))
:imported false
:potential-duplicate false)
:vendor-code)))))

View File

@@ -2,6 +2,7 @@
(:require [auto-ap.db.utils :refer [clj->db db->clj get-conn]]
[clj-time.core :as time]
[clojure.java.jdbc :as j]
[clj-time.jdbc :as jdbc]
[clojure.string :as str]))
(defn insert [row]

View File

@@ -16,18 +16,23 @@
(fn [[k v]]
[(keyword (snake->kebab (name k))) v])
x))
merged (merge kebabed (edn/read-string (:data kebabed)))]
merged))
([x namespace]
(let [x (db->clj x)]
(assign-namespace x namespace))))
merged (if (:data kebabed)
(update kebabed :data edn/read-string)
kebabed)]
merged)))
(defn clj->db [x]
(into {}
(map
(fn [[k v]]
[(keyword (kebab->snake (name k))) v])
x)))
(let [snaked (into {}
(map
(fn [[k v]]
[(keyword (kebab->snake (name k))) v])
x))
unmerged (if (:data snaked)
(update snaked :data pr-str)
snaked)]
unmerged))
(defn merge-data [{:keys [data] :as x}]
(merge x (edn/read-string data)))
@@ -44,14 +49,3 @@
:user "ap"
:password "fifteen-invoices-imported!"}))
(defn assign-namespace [x n]
(reduce-kv
(fn [x k v]
(assoc x (if (and (keyword? k)
(not (qualified-keyword? k)))
(keyword n (name k))
k)
v))
{}
x))

View File

@@ -1,13 +1,12 @@
(ns auto-ap.db.vendors
(:require [auto-ap.db.utils :refer [assign-namespace clj->db db->clj
get-conn]]
(:require [auto-ap.db.utils :refer [clj->db db->clj get-conn]]
[auto-ap.entities.vendors :as entities]
[clojure.edn :as edn]
[clojure.java.jdbc :as j]))
(defn parse [x]
(db->clj x "auto-ap.entities.vendors"))
(db->clj x))
(defn unparse [x]
(-> x

View File

@@ -16,6 +16,7 @@
[ring.middleware.params :refer [wrap-params]]
[ring.middleware.reload :refer [wrap-reload]]
[ring.util.response :as response]))
(println env)
(defcredential (:aws-access-key-id env) (:aws-secret-access-key env) (:aws-region env))

View File

@@ -52,10 +52,9 @@
(excel/parse-file file filename))
(defn best-match [companies company-identifier]
(println companies)
(->> companies
(map (fn [company]
[company (apply min (map #(m/jaccard (.toLowerCase company-identifier) %) (:matches company)))]))
[company (apply min (map #(m/jaccard (.toLowerCase company-identifier) %) (:matches (:data company))))]))
(filter #(< (second %) 0.25))
(sort-by second)