Migrates back to datomic on-prem

This commit is contained in:
2023-04-29 07:12:51 -07:00
parent aca8f7c92c
commit b2ad7790cf
88 changed files with 2289 additions and 2286 deletions

View File

@@ -1,7 +1,7 @@
(ns auto-ap.datomic.users
(:require
[auto-ap.datomic :refer [conn]]
[datomic.client.api :as dc]))
[datomic.api :as dc]))
(defn add-arg [query name value where & rest]
(let [query (-> query
@@ -11,53 +11,46 @@
(reduce #(update-in %1 [:query :where] conj %2) query rest)))
(defn get-by-id [id]
(let [query (-> {:query {:find ['(pull ?e [*
{:user/clients [*]}
{:user/role [:db/ident]}])]
:in ['$]
:where []}
:args [(dc/db conn)]}
(add-arg '?e id ['?e]))]
(->> (dc/q query)
(map first)
(map #(update % :user/role :db/ident))
first)))
(->> [(dc/pull (dc/db conn)
'[*
{:user/clients [*]}
{:user/role [:db/ident]}]
id)]
(map #(update % :user/role :db/ident))
first))
(defn find-or-insert! [{:keys [:user/provider :user/provider-id] :as new-user}]
(let [is-first-user? (not (seq (dc/q {:query [:find '?e
:in '$
:where '[?e :user/provider]]
:args [(dc/db conn)]})))
user (some-> {:query [:find '(pull ?e [*
{:user/clients [*]}
{:user/role [:db/ident]}])
:in '$ '?provider '?provider-id
:where '[?e :user/provider ?provider]
'[?e :user/provider-id ?provider-id]]
:args [(dc/db conn) provider provider-id]}
(dc/q)
(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 {:tx-data [(cond-> new-user
true (assoc :db/id "user")
is-first-user? (assoc :user/role :user-role/admin))]})]
(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")))))))
(defn raw-graphql [_]
(let [query (cond-> {:query {:find ['(pull ?e [*
{:user/clients [*]}
{:user/role [:db/ident]}])]
:in ['$]
:where ['[?e :user/role]]}
:args [(dc/db conn)]})]
(->> (dc/q query)
(map first)
(map #(update % :user/role :db/ident))
)))
(->> (dc/q {:find ['(pull ?e [*
{:user/clients [*]}
{:user/role [:db/ident]}])]
:in ['$]
:where ['[?e :user/role]]}
(dc/db conn))
(map first)
(map #(update % :user/role :db/ident))
))
(defn sort-fn [args]
(cond