Merge branch 'master' into try-tailwind
This commit is contained in:
@@ -14,7 +14,8 @@
|
||||
[com.brunobonacci.mulog :as mu]
|
||||
[datomic.api :as dc]
|
||||
[clj-http.client :as client]
|
||||
[auto-ap.solr :as solr]))
|
||||
[auto-ap.solr :as solr]
|
||||
[clojure.set :as set]))
|
||||
|
||||
(def full-read '[*
|
||||
{:client/square-integration-status [:integration-status/message
|
||||
@@ -149,34 +150,48 @@
|
||||
|
||||
|
||||
(defn raw-graphql-ids [db args]
|
||||
(let [query (cond-> {:query {:find []
|
||||
:in ['$ ]
|
||||
:where []}
|
||||
:args [db]}
|
||||
(let [name-like-ids (cond (not (str/blank? (:name-like args)))
|
||||
(set (map (comp #(Long/parseLong %) :id)
|
||||
(solr/query solr/impl "clients"
|
||||
{"query" (format "_text_:(%s*)" (str/upper-case (solr/escape (:name-like args))))
|
||||
"fields" "id"
|
||||
"limit" 300})))
|
||||
|
||||
|
||||
(not (str/blank? (:code args)))
|
||||
(merge-query {:query {:in ['?client-code]
|
||||
:where ['[?e :client/code ?client-code]]}
|
||||
:args [(:code args)]})
|
||||
(not (str/blank? (:code args)))
|
||||
(set (map (comp #(Long/parseLong %) :id)
|
||||
(solr/query solr/impl "clients" {"query" (format "_text_:(%s*)" (str/upper-case (solr/escape (:code args))))
|
||||
"fields" "id"
|
||||
"limit" 300})))
|
||||
|
||||
(not (str/blank? (:name-like args)))
|
||||
(merge-query {:query {:in ['?name-like]
|
||||
:where ['[?e :client/name ?name]
|
||||
'[(clojure.string/includes? ?name ?name-like)]]}
|
||||
:args [(:name-like args)]})
|
||||
:else
|
||||
nil)
|
||||
valid-ids (cond
|
||||
(and name-like-ids (limited-clients (:id args)))
|
||||
(set/intersection name-like-ids (limited-clients (:id args)))
|
||||
|
||||
(limited-clients (:id args))
|
||||
(merge-query {:query {:in ['[?e ...]]
|
||||
:where []}
|
||||
:args [(set (map :db/id (limited-clients (:id args))))]})
|
||||
(limited-clients (:id args))
|
||||
(limited-clients (:id args))
|
||||
|
||||
|
||||
(:sort args) (add-sorter-fields {"name" ['[?e :client/name ?sort-name]]}
|
||||
args)
|
||||
name-like-ids
|
||||
name-like-ids
|
||||
|
||||
true
|
||||
(merge-query {:query {:find ['?sort-default '?e] :where ['[?e :client/name ?sort-default]]}}))]
|
||||
:else
|
||||
nil)
|
||||
|
||||
query (cond-> {:query {:find []
|
||||
:in ['$ ]
|
||||
:where []}
|
||||
:args [db]}
|
||||
valid-ids
|
||||
(merge-query {:query {:in ['[?e ...]]}
|
||||
:args [(set valid-ids)]})
|
||||
|
||||
|
||||
(:sort args) (add-sorter-fields {"name" ['[?e :client/name ?sort-name]]}
|
||||
args)
|
||||
|
||||
true
|
||||
(merge-query {:query {:find ['?sort-default '?e] :where ['[?e :client/name ?sort-default]]}}))]
|
||||
(->> (query2 query)
|
||||
(apply-sort-3 (update args :sort conj {:sort-key "default-2" :asc true}))
|
||||
(apply-pagination args))))
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
(ns auto-ap.datomic.users
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[datomic.api :as dc]))
|
||||
[datomic.api :as dc]
|
||||
[datomic.api :as d]))
|
||||
|
||||
(defn add-arg [query name value where & rest]
|
||||
(let [query (-> query
|
||||
@@ -19,27 +20,27 @@
|
||||
(map #(update % :user/role :db/ident))
|
||||
first))
|
||||
|
||||
(defn find-or-insert! [{:keys [:user/provider :user/provider-id] :as new-user}]
|
||||
|
||||
(defn find-or-insert! [{:keys [:user/provider :user/provider-id ] :as new-user}]
|
||||
(let [is-first-user? (not (seq (dc/q [:find '?e
|
||||
:in '$
|
||||
:where '[?e :user/provider]]
|
||||
(dc/db conn))))
|
||||
user (some-> (dc/q [:find '(pull ?e [*
|
||||
{:user/clients [*]}
|
||||
{:user/role [:db/ident]}])
|
||||
:in '$ '?provider '?provider-id
|
||||
:where '[?e :user/provider ?provider]
|
||||
'[?e :user/provider-id ?provider-id]]
|
||||
(dc/db conn) provider provider-id)
|
||||
first
|
||||
first
|
||||
(update :user/role :db/ident))]
|
||||
(if user
|
||||
user
|
||||
(let [new-user-trans @(dc/transact conn [(cond-> new-user
|
||||
true (assoc :db/id "user")
|
||||
is-first-user? (assoc :user/role :user-role/admin))])]
|
||||
(get-by-id (-> new-user-trans :tempids (get "user")))))))
|
||||
user-id (ffirst (dc/q '[:find ?e
|
||||
:in $ ?provider ?provider-id
|
||||
:where [?e :user/provider ?provider]
|
||||
[?e :user/provider-id ?provider-id]]
|
||||
(dc/db conn) provider provider-id))
|
||||
result @(dc/transact conn [[:upsert-entity (cond-> (assoc new-user :db/id (or user-id "user"))
|
||||
(not user-id) (assoc :user/role :user-role/none)
|
||||
is-first-user? (assoc :user/role :user-role/admin))]])
|
||||
user-id (or user-id (get-in result [:tempids "user"]))]
|
||||
(update (dc/pull (dc/db conn)
|
||||
'[*
|
||||
{:user/clients [*]}
|
||||
{:user/role [:db/ident]}]
|
||||
user-id)
|
||||
:user/role :db/ident)))
|
||||
|
||||
(defn raw-graphql [_]
|
||||
(->> (dc/q {:find ['(pull ?e [*
|
||||
|
||||
Reference in New Issue
Block a user