Skip to content
Snippets Groups Projects
Commit fda305f7 authored by Allen Gilliland's avatar Allen Gilliland
Browse files

update the database sync event publication so that we can actually track start...

update the database sync event publication so that we can actually track start & end as separate events but part of the same activity.  to do so we add a :tracking-hash to the events when they are published which is meant to remain consistent throughout the sync, then we implement our activity tracking code so that we can lookup an existing activity item and update it based on the custom hash.
parent a1a3b68a
Branches
Tags
No related merge requests found
......@@ -42,6 +42,11 @@ databaseChangeLog:
type: DATETIME
constraints:
nullable: false
- column:
name: custom_id
type: varchar(48)
constraints:
nullable: true
- column:
name: details
type: varchar
......
......@@ -44,8 +44,10 @@
*sel-disable-logging* true]
(sync-in-context driver database
(fn []
(let [start-time (System/currentTimeMillis)]
(let [start-time (System/currentTimeMillis)
tracking-hash (str (java.util.UUID/randomUUID))]
(log/info (u/format-color 'magenta "Syncing %s database '%s'..." (name (:engine database)) (:name database)))
(events/publish-event :database-sync-begin {:database_id (:id database) :tracking-hash tracking-hash})
(let [active-table-names (active-table-names driver database)
table-name->id (sel :many :field->id [Table :name] :db_id (:id database) :active true)]
......@@ -77,7 +79,7 @@
(map #(assoc % :db (delay database))) ; replace default delays with ones that reuse database (and don't require a DB call)
(sync-database-active-tables! driver))
(events/publish-event :database-sync {:database_id (:id database) :running_time (- (System/currentTimeMillis) start-time)})
(events/publish-event :database-sync-end {:database_id (:id database) :tracking-hash tracking-hash :running_time (- (System/currentTimeMillis) start-time)})
(log/info (u/format-color 'magenta "Finished syncing %s database %s. (%d ms)" (name (:engine database)) (:name database)
(- (System/currentTimeMillis) start-time))))))))
......
......@@ -51,7 +51,8 @@
:dashboard-add-cards
:dashboard-remove-cards
:dashboard-reposition-cards
:database-sync
:database-sync-begin
:database-sync-end
:install
:user-login})
......@@ -104,9 +105,21 @@
""
[])
(defn- process-database-activity
""
[])
(defn- process-database-activity [topic object]
(case topic
:database-sync-begin (ins Activity
:topic :database-sync
:model (topic->model topic)
:model_id (object->model-id topic object)
:custom_id (:tracking-hash object)
:details (-> object
(assoc :status "started")
(dissoc :database_id :tracking-hash)))
:database-sync-end (let [{activity-id :id} (sel :one Activity :custom_id (:tracking-hash object))]
(upd Activity activity-id
:details (-> object
(assoc :status "completed")
(dissoc :database_id :tracking-hash))))))
(defn- process-user-activity [topic object]
;; we only care about login activity when its the users first session (a.k.a. new user!)
......@@ -129,7 +142,7 @@
(case (topic->model topic)
"card" (process-card-activity)
"dashboard" (process-dashboard-activity)
"database" (process-database-activity)
"database" (process-database-activity topic object)
"install" (when-not (sel :one :fields [Activity :id])
(ins Activity :topic :install))
"user" (process-user-activity topic object)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment