From fe2e9350125cd4876245c58b69e948da5801ab22 Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Mon, 21 Aug 2023 10:27:31 +0200 Subject: [PATCH] feat(backend): added new column timezone to PG and CH session tables --- backend/internal/http/router/handlers-web.go | 1 + backend/internal/http/router/model.go | 1 + backend/pkg/sessions/model.go | 1 + backend/pkg/sessions/storage.go | 6 +++--- ee/backend/pkg/db/clickhouse/connector.go | 3 ++- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/internal/http/router/handlers-web.go b/backend/internal/http/router/handlers-web.go index 7ac619cee..481c58c1f 100644 --- a/backend/internal/http/router/handlers-web.go +++ b/backend/internal/http/router/handlers-web.go @@ -170,6 +170,7 @@ func (e *Router) startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) SessionID: sessionID, Platform: "web", Timestamp: sessionStart.Timestamp, + Timezone: req.Timezone, ProjectID: uint32(sessionStart.ProjectID), TrackerVersion: sessionStart.TrackerVersion, RevID: sessionStart.RevID, diff --git a/backend/internal/http/router/model.go b/backend/internal/http/router/model.go index 7d68050d9..3a6cac5dc 100644 --- a/backend/internal/http/router/model.go +++ b/backend/internal/http/router/model.go @@ -5,6 +5,7 @@ type StartSessionRequest struct { UserUUID *string `json:"userUUID"` RevID string `json:"revID"` Timestamp int64 `json:"timestamp"` + Timezone string `json:"timezone"` TrackerVersion string `json:"trackerVersion"` IsSnippet bool `json:"isSnippet"` DeviceMemory uint64 `json:"deviceMemory"` diff --git a/backend/pkg/sessions/model.go b/backend/pkg/sessions/model.go index e774ca094..2ffb902bd 100644 --- a/backend/pkg/sessions/model.go +++ b/backend/pkg/sessions/model.go @@ -3,6 +3,7 @@ package sessions type Session struct { SessionID uint64 Timestamp uint64 + Timezone string ProjectID uint32 TrackerVersion string RevID string diff --git a/backend/pkg/sessions/storage.go b/backend/pkg/sessions/storage.go index 9dec22c5e..a9d015a34 100644 --- a/backend/pkg/sessions/storage.go +++ b/backend/pkg/sessions/storage.go @@ -40,7 +40,7 @@ func (s *storageImpl) Add(sess *Session) error { tracker_version, issue_score, platform, user_agent, user_browser, user_browser_version, user_device_memory_size, user_device_heap_size, - user_id, user_state, user_city + user_id, user_state, user_city, timezone ) VALUES ( $1, $2, $3, $4, $5, $6, $7, @@ -49,7 +49,7 @@ func (s *storageImpl) Add(sess *Session) error { $11, $12, $13, NULLIF($14, ''), NULLIF($15, ''), NULLIF($16, ''), NULLIF($17, 0), NULLIF($18, 0::bigint), - NULLIF(LEFT($19, 8000), ''), NULLIF($20, ''), NULLIF($21, '') + NULLIF(LEFT($19, 8000), ''), NULLIF($20, ''), NULLIF($21, ''), $22 )`, sess.SessionID, sess.ProjectID, sess.Timestamp, sess.UserUUID, sess.UserDevice, sess.UserDeviceType, sess.UserCountry, @@ -58,7 +58,7 @@ func (s *storageImpl) Add(sess *Session) error { sess.TrackerVersion, sess.Timestamp/1000, sess.Platform, sess.UserAgent, sess.UserBrowser, sess.UserBrowserVersion, sess.UserDeviceMemorySize, sess.UserDeviceHeapSize, - sess.UserID, sess.UserState, sess.UserCity, + sess.UserID, sess.UserState, sess.UserCity, sess.Timezone, ) } diff --git a/ee/backend/pkg/db/clickhouse/connector.go b/ee/backend/pkg/db/clickhouse/connector.go index 29c0fe1d9..858fa930e 100644 --- a/ee/backend/pkg/db/clickhouse/connector.go +++ b/ee/backend/pkg/db/clickhouse/connector.go @@ -106,7 +106,7 @@ func (c *connectorImpl) newBatch(name, query string) error { } var batches = map[string]string{ - "sessions": "INSERT INTO experimental.sessions (session_id, project_id, user_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, user_state, user_city, datetime, duration, pages_count, events_count, errors_count, issue_score, referrer, issue_types, tracker_version, user_browser, user_browser_version, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10) VALUES (?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000))", + "sessions": "INSERT INTO experimental.sessions (session_id, project_id, user_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, user_state, user_city, datetime, duration, pages_count, events_count, errors_count, issue_score, referrer, issue_types, tracker_version, user_browser, user_browser_version, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10, timezone) VALUES (?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), ?)", "resources": "INSERT INTO experimental.resources (session_id, project_id, message_id, datetime, url, type, duration, ttfb, header_size, encoded_body_size, decoded_body_size, success) VALUES (?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?)", "autocompletes": "INSERT INTO experimental.autocomplete (project_id, type, value) VALUES (?, ?, ?)", "pages": "INSERT INTO experimental.events (session_id, project_id, message_id, datetime, url, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint_time, speed_index, visually_complete, time_to_interactive, event_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", @@ -297,6 +297,7 @@ func (c *connectorImpl) InsertWebSession(session *sessions.Session) error { session.Metadata8, session.Metadata9, session.Metadata10, + session.Timezone, ); err != nil { c.checkError("sessions", err) return fmt.Errorf("can't append to sessions batch: %s", err)