users are not activated, looks like you can edit existing ones
This commit is contained in:
@@ -1,23 +1,44 @@
|
||||
(ns auto-ap.db.users
|
||||
(:require [auto-ap.db.utils :refer [get-conn]]
|
||||
(:require [auto-ap.db.utils :refer [get-conn query db->clj clj->db]]
|
||||
[clojure.edn :as edn]
|
||||
[clojure.java.jdbc :as j]))
|
||||
[clojure.java.jdbc :as j]
|
||||
[honeysql.core :as sql]
|
||||
[honeysql.helpers :as helpers]))
|
||||
|
||||
(defn data->fields [x]
|
||||
(-> x
|
||||
(merge (:data x))
|
||||
(dissoc :data)))
|
||||
|
||||
(defn fields->data [x]
|
||||
(-> x
|
||||
(assoc-in [:data :role] (:role x))
|
||||
(assoc-in [:data :name] (:name x))
|
||||
(assoc-in [:data :companies] (:companies x))
|
||||
(dissoc :role)
|
||||
(dissoc :name)
|
||||
(dissoc :companies)))
|
||||
|
||||
(def base-query (sql/build :select :*
|
||||
:from :users))
|
||||
|
||||
(defn get-all []
|
||||
(map data->fields (query base-query)))
|
||||
|
||||
(defn find-or-insert! [row]
|
||||
(let [user (first (j/find-by-keys (get-conn)
|
||||
:users
|
||||
{:provider_id (:provider_id row)
|
||||
:provider (:provider row)}))
|
||||
]
|
||||
(let [user (-> base-query
|
||||
(helpers/merge-where [:and [:= :provider-id (:provider-id row)]
|
||||
[:= :provider (:provider row)]])
|
||||
query
|
||||
first
|
||||
data->fields)]
|
||||
(if user
|
||||
(merge user (edn/read-string (:data user "{}")))
|
||||
(do
|
||||
(j/insert! (get-conn)
|
||||
:users
|
||||
{:provider_id (:provider_id row)
|
||||
:provider (:provider row)
|
||||
:data "{}"})
|
||||
{:provider_id (:provider_id row)
|
||||
:provider (:provider row)
|
||||
:data "{}"})
|
||||
)))
|
||||
user
|
||||
(-> (j/insert! (get-conn)
|
||||
:users
|
||||
(-> row
|
||||
fields->data
|
||||
clj->db))
|
||||
first
|
||||
db->clj
|
||||
data->fields))))
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
[com.walmartlabs.lacinia.executor :as executor]
|
||||
[com.walmartlabs.lacinia.resolve :as resolve]
|
||||
[auto-ap.db.invoices :as invoices]
|
||||
[auto-ap.utils :refer [by]]
|
||||
[auto-ap.db.vendors :as vendors]
|
||||
[auto-ap.db.companies :as companies]
|
||||
[auto-ap.db.users :as users]
|
||||
[auto-ap.db.checks :as checks]
|
||||
[auto-ap.routes.checks :as rchecks]
|
||||
[auto-ap.db.reminders :as reminders]
|
||||
@@ -63,6 +65,12 @@
|
||||
:check {:type :check
|
||||
:resolve :get-check-by-id}}}
|
||||
|
||||
:user
|
||||
{:fields {:id {:type 'Int}
|
||||
:name {:type 'String}
|
||||
:role {:type 'String}
|
||||
:companies {:type '(list :company)}}}
|
||||
|
||||
:invoice
|
||||
{:fields {:id {:type 'Int}
|
||||
:total {:type 'String}
|
||||
@@ -117,7 +125,9 @@
|
||||
:company {:type '(list :company)
|
||||
:resolve :get-company}
|
||||
:vendor {:type '(list :vendor)
|
||||
:resolve :get-vendor}}
|
||||
:resolve :get-vendor}
|
||||
:user {:type '(list :user)
|
||||
:resolve :get-user}}
|
||||
|
||||
:input-objects
|
||||
{
|
||||
@@ -132,12 +142,7 @@
|
||||
:company_id {:type 'Int}}
|
||||
:resolve :mutation/print-checks}}})
|
||||
|
||||
(defn by [x kf]
|
||||
(reduce
|
||||
(fn [m x]
|
||||
(assoc m (kf x) x))
|
||||
{}
|
||||
x))
|
||||
|
||||
|
||||
(defn snake->kebab [s]
|
||||
(str/replace s #"_" "-"))
|
||||
@@ -178,8 +183,8 @@
|
||||
(defn get-invoice-page [context args value]
|
||||
(let [extra-context
|
||||
(cond-> {}
|
||||
(executor/selects-field? context :invoice/vendor) (assoc :vendor-cache (by (vendors/get-all) :id ))
|
||||
(executor/selects-field? context :invoice/company) (assoc :company-cache (by (companies/get-all) :id )))
|
||||
(executor/selects-field? context :invoice/vendor) (assoc :vendor-cache (by :id (vendors/get-all)))
|
||||
(executor/selects-field? context :invoice/company) (assoc :company-cache (by :id (companies/get-all))))
|
||||
|
||||
invoices (map
|
||||
->graphql
|
||||
@@ -195,7 +200,7 @@
|
||||
(defn get-reminder-page [context args value]
|
||||
(let [extra-context
|
||||
(cond-> {}
|
||||
(executor/selects-field? context :reminder/vendor) (assoc :vendor-cache (by (vendors/get-all) :id )))
|
||||
(executor/selects-field? context :reminder/vendor) (assoc :vendor-cache (by :id (vendors/get-all))))
|
||||
|
||||
reminders (map
|
||||
->graphql
|
||||
@@ -232,6 +237,22 @@
|
||||
(->graphql
|
||||
(companies/get-all)))
|
||||
|
||||
(defn join-companies [users]
|
||||
(let [companies (by :id (companies/get-all))]
|
||||
(map
|
||||
(fn [u]
|
||||
(update u :companies #(map companies %)))
|
||||
users)))
|
||||
|
||||
(defn get-user [context args value]
|
||||
(let [users (users/get-all)
|
||||
users (cond-> users
|
||||
(executor/selects-field? context :user/companies)
|
||||
(join-companies)
|
||||
)]
|
||||
(println users)
|
||||
(->graphql users)))
|
||||
|
||||
(defn get-vendor [context args value]
|
||||
(->graphql
|
||||
(vendors/get-all)))
|
||||
@@ -253,6 +274,7 @@
|
||||
:get-invoices-checks get-invoices-checks
|
||||
:get-check-by-id get-check-by-id
|
||||
:get-company get-company
|
||||
:get-user get-user
|
||||
:mutation/print-checks print-checks
|
||||
:get-vendor get-vendor})
|
||||
schema/compile))
|
||||
|
||||
@@ -28,13 +28,16 @@
|
||||
:body
|
||||
(doto println))
|
||||
user (users/find-or-insert! {:provider "google"
|
||||
:provider_id (:id profile)})]
|
||||
:provider-id (:id profile)
|
||||
:role "none"
|
||||
:name (:name profile)})]
|
||||
|
||||
(if (and token user)
|
||||
{:status 301
|
||||
:headers {"Location" (str "/?jwt=" (jwt/sign {:user "test"
|
||||
:exp (time/plus (time/now) (time/days 7))
|
||||
:companies (:companies user)
|
||||
:role (:role user)
|
||||
:name (:name profile)}
|
||||
(:jwt-secret env)
|
||||
{:alg :hs512}))}}
|
||||
|
||||
Reference in New Issue
Block a user