From 00ca3d6184550dde5d66d45e7bad7c560f685e61 Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Thu, 22 Jun 2023 14:26:31 +0200 Subject: [PATCH] feat(backend): added user's state and city to CH --- backend/pkg/db/postgres/session.go | 12 +++++++++--- ee/backend/pkg/db/clickhouse/connector.go | 4 +++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/pkg/db/postgres/session.go b/backend/pkg/db/postgres/session.go index c402ed703..39a5d2738 100644 --- a/backend/pkg/db/postgres/session.go +++ b/backend/pkg/db/postgres/session.go @@ -8,13 +8,13 @@ import ( func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { s := &Session{SessionID: sessionID} - var revID, userOSVersion, userBrowserVersion *string + var revID, userOSVersion, userBrowserVersion, userState, userCity *string var issueTypes pgtype.EnumArray if err := conn.c.QueryRow(` SELECT platform, duration, project_id, start_ts, user_uuid, user_os, user_os_version, - user_device, user_device_type, user_country, + user_device, user_device_type, user_country, user_state, user_city, rev_id, tracker_version, user_id, user_anonymous_id, referrer, pages_count, events_count, errors_count, issue_types, @@ -28,7 +28,7 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { ).Scan(&s.Platform, &s.Duration, &s.ProjectID, &s.Timestamp, &s.UserUUID, &s.UserOS, &userOSVersion, - &s.UserDevice, &s.UserDeviceType, &s.UserCountry, + &s.UserDevice, &s.UserDeviceType, &s.UserCountry, &userState, &userCity, &revID, &s.TrackerVersion, &s.UserID, &s.UserAnonymousID, &s.Referrer, &s.PagesCount, &s.EventsCount, &s.ErrorsCount, &issueTypes, @@ -49,5 +49,11 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { if err := issueTypes.AssignTo(&s.IssueTypes); err != nil { log.Printf("can't scan IssueTypes, err: %s", err) } + if userState != nil { + s.UserState = *userState + } + if userCity != nil { + s.UserCity = *userCity + } return s, nil } diff --git a/ee/backend/pkg/db/clickhouse/connector.go b/ee/backend/pkg/db/clickhouse/connector.go index 12ed1fb3f..61e7b5e7f 100644 --- a/ee/backend/pkg/db/clickhouse/connector.go +++ b/ee/backend/pkg/db/clickhouse/connector.go @@ -105,7 +105,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, 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) 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", @@ -273,6 +273,8 @@ func (c *connectorImpl) InsertWebSession(session *types.Session) error { nullableString(session.UserDevice), session.UserDeviceType, session.UserCountry, + session.UserState, + session.UserCity, datetime(session.Timestamp), uint32(*session.Duration), uint16(session.PagesCount),