not using namespaced keys, due to graphql
This commit is contained in:
@@ -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)] )
|
||||
|
||||
@@ -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)))))
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user