(ns auto-ap.db.checks (:require [auto-ap.db.utils :refer [clj->db db->clj get-conn execute!] :as u] [auto-ap.entities.companies :as entity] [clojure.edn :as edn] [clojure.java.jdbc :as j] [honeysql.core :as sql] [honeysql.helpers :as helpers])) (def base-query (sql/build :select :* :from :checks)) (defn data->fields [x] (-> x (merge (:data x)) (dissoc :data))) (defn query [q] (map data->fields (u/query q))) (defn get-all [] (query base-query)) (defn get-by-id [id] (first (query (-> base-query (helpers/merge-where [:= :id id]))))) (defn fields->data [x] (-> x (assoc-in [:data :pdf-data] (:pdf-data x)) (assoc-in [:data :invoices] (:invoices x)) (dissoc :pdf-data) (dissoc :invoices))) (defn insert! [row] (-> (j/insert! (get-conn) :checks (-> row fields->data clj->db)) first db->clj data->fields)) (defn insert-multi! [rows] (->> (j/insert-multi! (get-conn) :checks (->> rows (map fields->data) (map clj->db))) (map db->clj) (map data->fields))) #_(defn add-sort-by [q sort-by asc] (let [sort-by-key (keyword sort-by)] (cond (all-keys sort-by-key) (helpers/merge-order-by q [sort-by-key (when-not asc :desc)]) (= :vendor sort-by-key) (-> q (helpers/merge-left-join [:vendors :v] [:= :v.id :invoices.vendor-id] ) (helpers/merge-order-by [:v.name (when-not asc :desc)])) (= :company sort-by-key) (-> q (helpers/merge-left-join [:companies :c] [:= :c.id :invoices.company-id] ) (helpers/merge-order-by [:c.name (when-not asc :desc)])) :else q))) (defn base-graphql [{:keys [company-id vendor-id check-number]}] (cond-> base-query (not (nil? company-id)) (helpers/merge-where [:= :company-id company-id]) (not (nil? vendor-id)) (helpers/merge-where [:= :vendor-id vendor-id]) (not (nil? check-number)) (helpers/merge-where [:= :check-number check-number]))) (defn get-graphql [{:keys [start sort-by asc] :as args}] (query (cond-> (base-graphql args) #_#_(not (nil? sort-by) ) (add-sort-by sort-by asc) true (assoc :limit 20) start (assoc :offset start)))) (defn count-graphql [args] (:count (first (query (assoc (base-graphql args) :select [:%count.*])))))