diff --git a/backend/internal/db/datasaver/saver.go b/backend/internal/db/datasaver/saver.go index 1a017fa6f..20aec9736 100644 --- a/backend/internal/db/datasaver/saver.go +++ b/backend/internal/db/datasaver/saver.go @@ -81,26 +81,6 @@ func (s *saverImpl) handleMessage(msg Message) error { return s.pg.InsertWebInputDuration(m) case *MouseThrashing: return s.pg.InsertMouseThrashing(m) - case *IOSSessionStart: - return s.pg.InsertIOSSessionStart(m) - case *IOSSessionEnd: - return s.pg.InsertIOSSessionEnd(m) - case *IOSUserID: - return s.pg.InsertIOSUserID(m) - case *IOSUserAnonymousID: - return s.pg.InsertIOSUserAnonymousID(m) - case *IOSCustomEvent: - return s.pg.InsertIOSCustomEvent(m) - case *IOSClickEvent: - return s.pg.InsertIOSClickEvent(m) - case *IOSInputEvent: - return s.pg.InsertIOSInputEvent(m) - case *IOSNetworkCall: - return s.pg.InsertIOSNetworkCall(m) - case *IOSScreenEnter: - return s.pg.InsertIOSScreenEnter(m) - case *IOSCrash: - return s.pg.InsertIOSCrash(m) } return nil } diff --git a/backend/pkg/db/cache/messages-ios.go b/backend/pkg/db/cache/messages-ios.go deleted file mode 100644 index 93367f925..000000000 --- a/backend/pkg/db/cache/messages-ios.go +++ /dev/null @@ -1,93 +0,0 @@ -package cache - -import ( - "fmt" - . "openreplay/backend/pkg/db/types" - . "openreplay/backend/pkg/messages" -) - -func (c *PGCache) InsertIOSSessionStart(s *IOSSessionStart) error { - sessionID := s.SessionID() - if c.Cache.HasSession(sessionID) { - return fmt.Errorf("session %d already in cache", sessionID) - } - newSess := &Session{ - SessionID: sessionID, - Platform: "ios", - Timestamp: s.Timestamp, - ProjectID: uint32(s.ProjectID), - TrackerVersion: s.TrackerVersion, - RevID: s.RevID, - UserUUID: s.UserUUID, - UserOS: s.UserOS, - UserOSVersion: s.UserOSVersion, - UserDevice: s.UserDevice, - UserCountry: s.UserCountry, - UserDeviceType: s.UserDeviceType, - } - c.Cache.SetSession(newSess) - if err := c.Conn.InsertSessionStart(sessionID, newSess); err != nil { - // don't know why? - c.Cache.SetSession(nil) - return err - } - return nil -} - -func (c *PGCache) InsertIOSSessionEnd(e *IOSSessionEnd) error { - sessionID := e.SessionID() - _, err := c.InsertSessionEnd(sessionID, e.Timestamp) - return err -} - -func (c *PGCache) InsertIOSScreenEnter(screenEnter *IOSScreenEnter) error { - sessionID := screenEnter.SessionID() - if err := c.Conn.InsertIOSScreenEnter(screenEnter); err != nil { - return err - } - session, err := c.Cache.GetSession(sessionID) - if err != nil { - return err - } - session.PagesCount += 1 - return nil -} - -func (c *PGCache) InsertIOSClickEvent(clickEvent *IOSClickEvent) error { - sessionID := clickEvent.SessionID() - if err := c.Conn.InsertIOSClickEvent(clickEvent); err != nil { - return err - } - session, err := c.Cache.GetSession(sessionID) - if err != nil { - return err - } - session.EventsCount += 1 - return nil -} - -func (c *PGCache) InsertIOSInputEvent(inputEvent *IOSInputEvent) error { - sessionID := inputEvent.SessionID() - if err := c.Conn.InsertIOSInputEvent(inputEvent); err != nil { - return err - } - session, err := c.Cache.GetSession(sessionID) - if err != nil { - return err - } - session.EventsCount += 1 - return nil -} - -func (c *PGCache) InsertIOSCrash(crash *IOSCrash) error { - sessionID := crash.SessionID() - session, err := c.Cache.GetSession(sessionID) - if err != nil { - return err - } - if err := c.Conn.InsertIOSCrash(session.ProjectID, crash); err != nil { - return err - } - session.ErrorsCount += 1 - return nil -} diff --git a/backend/pkg/db/postgres/messages-ios.go b/backend/pkg/db/postgres/messages-ios.go deleted file mode 100644 index ace1955f5..000000000 --- a/backend/pkg/db/postgres/messages-ios.go +++ /dev/null @@ -1,187 +0,0 @@ -package postgres - -import ( - "openreplay/backend/pkg/hashid" - "openreplay/backend/pkg/messages" - "openreplay/backend/pkg/url" -) - -func (conn *Conn) InsertIOSCustomEvent(e *messages.IOSCustomEvent) error { - sessionID := e.SessionID() - err := conn.InsertCustomEvent(sessionID, e.Timestamp, truncSqIdx(e.Index), e.Name, e.Payload) - if err == nil { - conn.insertAutocompleteValue(sessionID, 0, "CUSTOM_IOS", e.Name) - } - return err -} - -func (conn *Conn) InsertIOSUserID(userID *messages.IOSUserID) error { - sessionID := userID.SessionID() - err := conn.InsertUserID(sessionID, userID.Value) - if err == nil { - conn.insertAutocompleteValue(sessionID, 0, "USERID_IOS", userID.Value) - } - return err -} - -func (conn *Conn) InsertIOSUserAnonymousID(userAnonymousID *messages.IOSUserAnonymousID) error { - sessionID := userAnonymousID.SessionID() - err := conn.InsertUserAnonymousID(sessionID, userAnonymousID.Value) - if err == nil { - conn.insertAutocompleteValue(sessionID, 0, "USERANONYMOUSID_IOS", userAnonymousID.Value) - } - return err -} - -func (conn *Conn) InsertIOSNetworkCall(e *messages.IOSNetworkCall) error { - sessionID := e.SessionID() - err := conn.InsertRequest(sessionID, e.Timestamp, truncSqIdx(e.Index), e.URL, e.Duration, e.Success) - if err == nil { - conn.insertAutocompleteValue(sessionID, 0, "REQUEST_IOS", url.DiscardURLQuery(e.URL)) - } - return err -} - -func (conn *Conn) InsertIOSScreenEnter(screenEnter *messages.IOSScreenEnter) error { - sessionID := screenEnter.SessionID() - tx, err := conn.c.Begin() - if err != nil { - return err - } - defer tx.rollback() - - if err = tx.exec(` - INSERT INTO events_ios.views ( - session_id, timestamp, seq_index, name - ) VALUES ( - $1, $2, $3, $4 - )`, - sessionID, screenEnter.Timestamp, screenEnter.Index, screenEnter.ViewName, - ); err != nil { - return err - } - if err = tx.exec(` - UPDATE sessions SET pages_count = pages_count + 1 - WHERE session_id = $1`, - sessionID, - ); err != nil { - return err - } - if err = tx.commit(); err != nil { - return err - } - conn.insertAutocompleteValue(sessionID, 0, "VIEW_IOS", screenEnter.ViewName) - return nil -} - -func (conn *Conn) InsertIOSClickEvent(clickEvent *messages.IOSClickEvent) error { - sessionID := clickEvent.SessionID() - tx, err := conn.c.Begin() - if err != nil { - return err - } - defer tx.rollback() - - if err = tx.exec(` - INSERT INTO events_ios.clicks ( - session_id, timestamp, seq_index, label - ) VALUES ( - $1, $2, $3, $4 - )`, - sessionID, clickEvent.Timestamp, clickEvent.Index, clickEvent.Label, - ); err != nil { - return err - } - if err = tx.exec(` - UPDATE sessions SET events_count = events_count + 1 - WHERE session_id = $1`, - sessionID, - ); err != nil { - return err - } - if err = tx.commit(); err != nil { - return err - } - conn.insertAutocompleteValue(sessionID, 0, "CLICK_IOS", clickEvent.Label) - return nil -} - -func (conn *Conn) InsertIOSInputEvent(inputEvent *messages.IOSInputEvent) error { - sessionID := inputEvent.SessionID() - tx, err := conn.c.Begin() - if err != nil { - return err - } - defer tx.rollback() - - var value interface{} = inputEvent.Value - if inputEvent.ValueMasked { - value = nil - } - - if err = tx.exec(` - INSERT INTO events_ios.inputs ( - session_id, timestamp, seq_index, label, value - ) VALUES ( - $1, $2, $3, $4, $5 - )`, - sessionID, inputEvent.Timestamp, inputEvent.Index, inputEvent.Label, value, - ); err != nil { - return err - } - if err = tx.exec(` - UPDATE sessions SET events_count = events_count + 1 - WHERE session_id = $1`, - sessionID, - ); err != nil { - return err - } - if err = tx.commit(); err != nil { - return err - } - conn.insertAutocompleteValue(sessionID, 0, "INPUT_IOS", inputEvent.Label) - // conn.insertAutocompleteValue(sessionID, "INPUT_VALUE", inputEvent.Label) - return nil -} - -func (conn *Conn) InsertIOSCrash(projectID uint32, crash *messages.IOSCrash) error { - sessionID := crash.SessionID() - tx, err := conn.c.Begin() - if err != nil { - return err - } - defer tx.rollback() - - crashID := hashid.IOSCrashID(projectID, crash) - - if err = tx.exec(` - INSERT INTO crashes_ios ( - project_id, crash_id, name, reason, stacktrace - ) (SELECT - project_id, $2, $3, $4, $5 - FROM sessions - WHERE session_id = $1 - )ON CONFLICT DO NOTHING`, - sessionID, crashID, crash.Name, crash.Reason, crash.Stacktrace, - ); err != nil { - return err - } - if err = tx.exec(` - INSERT INTO events_ios.crashes ( - session_id, timestamp, seq_index, crash_id - ) VALUES ( - $1, $2, $3, $4 - )`, - sessionID, crash.Timestamp, crash.Index, crashID, - ); err != nil { - return err - } - if err = tx.exec(` - UPDATE sessions SET errors_count = errors_count + 1, issue_score = issue_score + 1000 - WHERE session_id = $1`, - sessionID, - ); err != nil { - return err - } - return tx.commit() -} diff --git a/backend/pkg/db/postgres/notification.go b/backend/pkg/db/postgres/notification.go deleted file mode 100644 index c9670b8bd..000000000 --- a/backend/pkg/db/postgres/notification.go +++ /dev/null @@ -1,60 +0,0 @@ -package postgres - -import ( - "bytes" - "encoding/json" - "log" - "net/http" -) - -//go:generate $GOPATH/bin/easytags $GOFILE json - -type TenantNotification struct { - TenantId uint32 `db:"tenant_id" json:"tenantId"` - Title string `db:"title" json:"title"` - Description string `db:"description" json:"description"` - ButtonText string `db:"button_text" json:"buttonText"` - ButtonUrl string `db:"button_url" json:"buttonUrl"` - ImageUrl *string `db:"image_url" json:"imageUrl"` - Options map[string]interface{} `db:"options" json:"options"` -} - -type Notifications struct { - Notifications []*TenantNotification `json:"notifications"` - Token string `json:"token"` -} - -func (n *Notifications) Send(url string) { - n.Token = "nF46JdQqAM5v9KI9lPMpcu8o9xiJGvNNWOGL7TJP" - body, err := json.Marshal(n) - if err != nil { - log.Println(err) - return - } - //log.Println("------------ Sending a new notification") - req, err := http.NewRequest("POST", url, bytes.NewBuffer(body)) - if err != nil { - log.Printf("error in POST notifications: %v\n", err) - return - } - //req.Header.Set("X-Custom-Header", "myvalue") - req.Header.Set("Content-Type", "application/json") - - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - panic(err) - } - defer resp.Body.Close() - //log.Println("response Status:", resp.Status) - //log.Println("response Headers:", resp.Header) - //respBody, _ := ioutil.ReadAll(resp.Body) - //log.Println("response Body:", string(respBody)) -} - -func (n TenantNotification) Send(url string) { - body := Notifications{ - Notifications: []*TenantNotification{&n}, - } - body.Send(url) -}