Add webhook trigger to audit events

This commit is contained in:
Andrey Antukh 2025-05-08 11:52:36 +02:00
parent 3fe16bd8f9
commit e203536506
2 changed files with 35 additions and 24 deletions

View file

@ -108,6 +108,7 @@
[::ip-addr {:optional true} ::sm/text] [::ip-addr {:optional true} ::sm/text]
[::props {:optional true} [:map-of :keyword :any]] [::props {:optional true} [:map-of :keyword :any]]
[::context {:optional true} [:map-of :keyword :any]] [::context {:optional true} [:map-of :keyword :any]]
[::tracked-at {:optional true} ::sm/inst]
[::webhooks/event? {:optional true} ::sm/boolean] [::webhooks/event? {:optional true} ::sm/boolean]
[::webhooks/batch-timeout {:optional true} ::dt/duration] [::webhooks/batch-timeout {:optional true} ::dt/duration]
[::webhooks/batch-key {:optional true} [::webhooks/batch-key {:optional true}

View file

@ -15,6 +15,7 @@
[app.config :as cf] [app.config :as cf]
[app.db :as db] [app.db :as db]
[app.http.client :as http] [app.http.client :as http]
[app.loggers.audit :as audit]
[app.util.time :as dt] [app.util.time :as dt]
[app.worker :as wrk] [app.worker :as wrk]
[clojure.data.json :as json] [clojure.data.json :as json]
@ -67,9 +68,18 @@
(defmethod ig/init-key ::process-event-handler (defmethod ig/init-key ::process-event-handler
[_ cfg] [_ cfg]
(fn [{:keys [props] :as task}] (fn [{:keys [props] :as task}]
(l/dbg :hint "process webhook event" :name (:name props))
(when-let [items (lookup-webhooks cfg props)] (let [items (lookup-webhooks cfg props)
event {::audit/profile-id (:profile-id props)
::audit/name "webhook"
::audit/type "trigger"
::audit/props {:name (get props :name)
:event-id (get props :id)
:total-affected (count items)}}]
(audit/insert! cfg event)
(when items
(l/trc :hint "webhooks found for event" :total (count items)) (l/trc :hint "webhooks found for event" :total (count items))
(db/tx-run! cfg (fn [cfg] (db/tx-run! cfg (fn [cfg]
(doseq [item items] (doseq [item items]
@ -78,7 +88,7 @@
(assoc ::wrk/queue :webhooks) (assoc ::wrk/queue :webhooks)
(assoc ::wrk/max-retries 3) (assoc ::wrk/max-retries 3)
(assoc ::wrk/params {:event props (assoc ::wrk/params {:event props
:config item}))))))))) :config item}))))))))))
;; --- RUN ;; --- RUN
(declare interpret-exception) (declare interpret-exception)