(ns auto-ap.datomic.bank-accounts
  (:require [datomic.api :as d]
            [auto-ap.datomic :refer [uri]]
            [clj-time.coerce :as c]
            [clojure.set :refer [rename-keys]]))

(defn add-arg [query name value where & rest]
  (let [query (-> query
                  (update :args conj value)
                  (update-in [:query :in] conj name)
                  (update-in [:query :where] conj where))]
    (reduce #(update-in %1 [:query :where] conj %2) query rest)))

(def default-read '(pull ?e [*]))

(defn <-datomic [x]
  (->> x 
       (map #(update % :bank-account/type :db/ident))
       ))



(defn get-by-id [id]
  (->> 
   (d/query (-> {:query {:find [default-read]
                         :in ['$]
                         :where []}
                 :args [(d/db (d/connect uri))]}
                (add-arg '?e id ['?e])))
   (map first)
   (<-datomic)   
   (first)))




