                     record
                     (process-record record record-type)
 
-                    true
-                    (inc-and-update-progress % record-type))))
+                    (report-progress? record-type)
+                    (inc-and-update-progress record-type))))
 
 (defn import-data
   "Reads the contents from the specified input and saves

  (import-budget context budget))

(defmethod process-record :price
  [{:keys [storage entity] :as context} price _]
  (let [commodity (->> {:exchange (name (:exchange price))
                        :symbol (:symbol price)
                        :entity-id (:id entity)}
                       (commodities/search storage)
                       first)]
    (prices/create storage (-> price
                               (assoc :commodity-id (:id commodity))
                               (dissoc :exchange :symbol)))))

(defmethod process-record :commodity
  [{:keys [entity storage] :as context} commodity _]
  (let [to-create (assoc commodity :entity-id (:id entity))
        created (commodities/create storage to-create)]
    (-> context
        (update-in [:commodities] #((fnil conj []) % created))
        (inc-and-update-progress :commodity))))

(defn process-callback
  "Top-level callback processing

  (fn [source-type _ _]
    source-type))

(defn- import-price
  [{:keys [storage entity] :as context} price]
  (let [commodity (->> {:exchange (name (:exchange price))
                        :symbol (:symbol price)
                        :entity-id (:id entity)}
                       (commodities/search storage)
                       first)]
    (prices/create storage (-> price
                               (assoc :commodity-id (:id commodity))
                               (dissoc :exchange :symbol))))
  context)

(defn- find-commodity
  [context {:keys [exchange symbol]}]
  (->> context
