(ns auto-ap.graphql.clients (:require [auto-ap.datomic.clients :as d-clients] [datomic.api :as d] [auto-ap.datomic :refer [uri remove-nils]] [auto-ap.graphql.utils :refer [->graphql assert-admin can-see-client?]])) #_(def role->datomic-role {":none" :user-role/none ":admin" :user-role/admin ":user" :user-role/user}) (defn edit-client [context {:keys [edit_client new_bank_accounts] :as args} value] (assert-admin (:id context)) (println (:address edit_client)) (let [client (d-clients/get-by-id (:id edit_client)) #_#_new-clients (set (map #(Long/parseLong %) (:clients edit_user))) #_#_clients-to-remove (->> (:user/clients user) (map :db/id) (filter #(not (new-clients %)) ))] (println edit_client) @(d/transact (d/connect uri) (doto (-> [(remove-nils {:db/id (:db/id client) :client/name (:name edit_client) :client/email (:email edit_client) :client/locations (filter identity (:locations edit_client)) :client/address (remove-nils { :address/street1 (:street1 (:address edit_client)) :address/street2 (:street2 (:address edit_client)) :address/city (:city (:address edit_client)) :address/state (:state (:address edit_client)) :address/zip (:zip (:address edit_client))}) :client/bank-accounts (map #(remove-nils {:db/id (:id %) :bank-account/bank-name (:bank_name %) :bank-account/bank-code (:bank_code %) :bank-account/routing (:routing %) :bank-account/name (:name %) :bank-account/number (:number %) :bank-account/check-number (:check_number %) :bank-account/yodlee-account-id (:yodlee_account_id %) :bank-account/type :bank-account-type/check } ) (:bank_accounts edit_client)) })] #_(into (map (fn [c] [:db/retract (:db/id user) :user/clients c]) clients-to-remove))) clojure.pprint/pprint)) (doto (->graphql (d-clients/get-by-id (:id edit_client))) println))) (defn get-client [context args value] (->graphql (filter #(can-see-client? (:id context) %) (d-clients/get-all))))