diff --git a/src/clj/auto_ap/jobs/sysco.clj b/src/clj/auto_ap/jobs/sysco.clj index 82d1e101..45cd5e3b 100644 --- a/src/clj/auto_ap/jobs/sysco.clj +++ b/src/clj/auto_ap/jobs/sysco.clj @@ -18,21 +18,26 @@ [datomic.api :as dc]) (:import (java.util UUID))) -(def sysco-name->line - (with-open [data (io/reader (io/resource "sysco_line_item_mapping.csv"))] - (let [data (csv/read-csv data)] - (->> data - (drop 1) - (map (fn [ [_ _ name _ account-number]] - [name (ffirst (dc/q '[:find ?a - :in $ ?an - :where [?a :account/numeric-code ?an]] - (dc/db conn) - (Long/parseLong account-number)))])) - (into {}))))) +(def sysco-name->line (atom nil)) +(defn get-sysco->line [] + (when (nil? @sysco-name->line) + (reset! @sysco-name->line + (with-open [data (io/reader (io/resource "sysco_line_item_mapping.csv"))] + (let [data (csv/read-csv data)] + (->> data + (drop 1) + (map (fn [[_ _ name _ account-number]] + [name (ffirst (dc/q '[:find ?a + :in $ ?an + :where [?a :account/numeric-code ?an]] + (dc/db conn) + (Long/parseLong account-number)))])) + (into {})))))) + @sysco-name->line) (defn get-line-account [item-name] - (get sysco-name->line item-name + (get (get-sysco->line) + item-name (ffirst (dc/q '[:find ?a :in $ ?an :where [?a :account/numeric-code ?an]]