From 690b969fe3452a14c634b4fd7662a697f6f13325 Mon Sep 17 00:00:00 2001
From: David Dworken <david@daviddworken.com>
Date: Sun, 15 Oct 2023 17:45:38 -0700
Subject: [PATCH] Use queryReason parameter to properly record query
 interactions

---
 backend/server/internal/server/api_handlers.go | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/backend/server/internal/server/api_handlers.go b/backend/server/internal/server/api_handlers.go
index 18cb6cf..ecec251 100644
--- a/backend/server/internal/server/api_handlers.go
+++ b/backend/server/internal/server/api_handlers.go
@@ -96,12 +96,16 @@ func (s *Server) apiQueryHandler(w http.ResponseWriter, r *http.Request) {
 	ctx := r.Context()
 	userId := getRequiredQueryParam(r, "user_id")
 	deviceId := getRequiredQueryParam(r, "device_id")
+	queryReason := getOptionalQueryParam(r, "queryReason", s.isTestEnvironment)
+	isBackgroundQuery := queryReason == "preload" || queryReason == "newclient"
 
 	// TODO: add these to the context in a middleware
 	version := getHishtoryVersion(r)
 	remoteIPAddr := getRemoteAddr(r)
 
-	s.handleNonCriticalError(s.updateUsageData(r.Context(), version, remoteIPAddr, userId, deviceId, 0, true))
+	if !isBackgroundQuery {
+		s.handleNonCriticalError(s.updateUsageData(r.Context(), version, remoteIPAddr, userId, deviceId, 0, true))
+	}
 
 	// Delete any entries that match a pending deletion request
 	deletionRequests, err := s.db.DeletionRequestsForUserAndDevice(r.Context(), userId, deviceId)
@@ -136,7 +140,7 @@ func (s *Server) apiQueryHandler(w http.ResponseWriter, r *http.Request) {
 	}
 
 	if s.statsd != nil {
-		s.statsd.Incr("hishtory.query", []string{}, 1.0)
+		s.statsd.Incr("hishtory.query", []string{"query_reason:" + queryReason}, 1.0)
 	}
 }