From 486a7115d7babd2fe09ac866acc248f8d5c406ed Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 8 Apr 2024 13:49:29 +0200 Subject: [PATCH] feat(backend): added session's screen width/height to PG --- backend/internal/http/router/handlers-mobile.go | 6 +++--- backend/internal/http/router/handlers-web.go | 2 ++ backend/internal/http/router/model.go | 2 ++ backend/pkg/sessions/model.go | 2 ++ backend/pkg/sessions/storage.go | 6 +++--- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/internal/http/router/handlers-mobile.go b/backend/internal/http/router/handlers-mobile.go index 7817e520a7..c0fb0eaf71 100644 --- a/backend/internal/http/router/handlers-mobile.go +++ b/backend/internal/http/router/handlers-mobile.go @@ -105,13 +105,11 @@ func (e *Router) startSessionHandlerIOS(w http.ResponseWriter, r *http.Request) r = r.WithContext(context.WithValue(r.Context(), "sessionID", fmt.Sprintf("%d", sessionID))) geoInfo := e.ExtractGeoData(r) - deviceType, platform, os, screen := ios.GetIOSDeviceType(req.UserDevice), "ios", "IOS", "" + deviceType, platform, os := ios.GetIOSDeviceType(req.UserDevice), "ios", "IOS" if req.Platform != "" && req.Platform != "ios" { deviceType = req.UserDeviceType platform = req.Platform os = "Android" - screen = fmt.Sprintf("%d:%d", req.Width, req.Height) - e.log.Info(r.Context(), "mobile screen size: %s", screen) } if !req.DoNotRecord { @@ -133,6 +131,8 @@ func (e *Router) startSessionHandlerIOS(w http.ResponseWriter, r *http.Request) UserCity: geoInfo.City, UserDeviceMemorySize: req.DeviceMemory, UserDeviceHeapSize: req.DeviceMemory, + ScreenWidth: req.Width, + ScreenHeight: req.Height, }); err != nil { e.log.Warn(r.Context(), "failed to add mobile session to DB: %s", err) } diff --git a/backend/internal/http/router/handlers-web.go b/backend/internal/http/router/handlers-web.go index d9f81b6811..56c8a3cc54 100644 --- a/backend/internal/http/router/handlers-web.go +++ b/backend/internal/http/router/handlers-web.go @@ -245,6 +245,8 @@ func (e *Router) startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) UserDeviceMemorySize: sessionStart.UserDeviceMemorySize, UserDeviceHeapSize: sessionStart.UserDeviceHeapSize, UserID: &sessionStart.UserID, + ScreenWidth: req.Width, + ScreenHeight: req.Height, }); err != nil { e.log.Warn(r.Context(), "can't insert sessionStart to DB: %s", err) } diff --git a/backend/internal/http/router/model.go b/backend/internal/http/router/model.go index 97800426aa..0a48b0ef01 100644 --- a/backend/internal/http/router/model.go +++ b/backend/internal/http/router/model.go @@ -17,6 +17,8 @@ type StartSessionRequest struct { BufferDiff uint64 `json:"bufferDiff"` // buffer diff in ms for start record session IsOffline bool `json:"isOffline"` // to indicate that we have to use user's start timestamp Condition string `json:"condition"` // condition for start record session + Width int `json:"width"` + Height int `json:"height"` } type StartSessionResponse struct { diff --git a/backend/pkg/sessions/model.go b/backend/pkg/sessions/model.go index 2ffb902bd6..02e511835e 100644 --- a/backend/pkg/sessions/model.go +++ b/backend/pkg/sessions/model.go @@ -43,6 +43,8 @@ type Session struct { UserDeviceHeapSize uint64 SaveRequestPayload bool EncryptionKey string + ScreenWidth int + ScreenHeight int } func (s *Session) SetMetadata(keyNo uint, value string) { diff --git a/backend/pkg/sessions/storage.go b/backend/pkg/sessions/storage.go index a5e9fc9847..e3028b9bc8 100644 --- a/backend/pkg/sessions/storage.go +++ b/backend/pkg/sessions/storage.go @@ -41,7 +41,7 @@ func (s *storageImpl) Add(sess *Session) error { tracker_version, issue_score, platform, user_browser, user_browser_version, user_device_memory_size, user_device_heap_size, - user_id, user_state, user_city, timezone + user_id, user_state, user_city, timezone, screen_width, screen_height ) VALUES ( $1, $2, $3, $4, $5, $6, $7, @@ -50,7 +50,7 @@ func (s *storageImpl) Add(sess *Session) error { $11, $12, $13, NULLIF($14, ''), NULLIF($15, ''), NULLIF($16, 0), NULLIF($17, 0::bigint), - NULLIF(LEFT($18, 8000), ''), NULLIF($19, ''), NULLIF($20, ''), $21 + NULLIF(LEFT($18, 8000), ''), NULLIF($19, ''), NULLIF($20, ''), $21, $22, $23 )`, sess.SessionID, sess.ProjectID, sess.Timestamp, sess.UserUUID, sess.UserDevice, sess.UserDeviceType, sess.UserCountry, @@ -59,7 +59,7 @@ func (s *storageImpl) Add(sess *Session) error { sess.TrackerVersion, sess.Timestamp/1000, sess.Platform, sess.UserBrowser, sess.UserBrowserVersion, sess.UserDeviceMemorySize, sess.UserDeviceHeapSize, - sess.UserID, sess.UserState, sess.UserCity, sess.Timezone, + sess.UserID, sess.UserState, sess.UserCity, sess.Timezone, sess.ScreenWidth, sess.ScreenHeight, ) }