* feat(db): added CH support to db service * feat(db): removed license check for CH client * feat(db): removed fts integration * feat(clickhouse): added config instead of direct env parsing * feat(clickhouse): removed prev extraHandlers * feat(clickhouse): an unified approach for data insertion to dbs * feat(clickhouse): removed unused imports
72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
package datasaver
|
|
|
|
import (
|
|
"context"
|
|
|
|
"openreplay/backend/pkg/messages"
|
|
"openreplay/backend/pkg/sessions"
|
|
)
|
|
|
|
func (s *saverImpl) handleMobileMessage(sessCtx context.Context, session *sessions.Session, msg messages.Message) error {
|
|
switch m := msg.(type) {
|
|
case *messages.MobileSessionEnd:
|
|
return s.ch.InsertMobileSession(session)
|
|
case *messages.MobileUserID:
|
|
if err := s.sessions.UpdateUserID(session.SessionID, m.ID); err != nil {
|
|
return err
|
|
}
|
|
s.pg.InsertAutocompleteValue(session.SessionID, session.ProjectID, "USERIDMOBILE", m.ID)
|
|
return nil
|
|
case *messages.MobileUserAnonymousID:
|
|
if err := s.sessions.UpdateAnonymousID(session.SessionID, m.ID); err != nil {
|
|
return err
|
|
}
|
|
s.pg.InsertAutocompleteValue(session.SessionID, session.ProjectID, "USERANONYMOUSIDMOBILE", m.ID)
|
|
return nil
|
|
case *messages.MobileMetadata:
|
|
return s.sessions.UpdateMetadata(m.SessionID(), m.Key, m.Value)
|
|
case *messages.MobileEvent:
|
|
if err := s.pg.InsertMobileEvent(session, m); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileCustom(session, m)
|
|
case *messages.MobileClickEvent:
|
|
if err := s.pg.InsertMobileClickEvent(session, m); err != nil {
|
|
return err
|
|
}
|
|
if err := s.sessions.UpdateEventsStats(session.SessionID, 1, 0); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileClick(session, m)
|
|
case *messages.MobileSwipeEvent:
|
|
if err := s.pg.InsertMobileSwipeEvent(session, m); err != nil {
|
|
return err
|
|
}
|
|
if err := s.sessions.UpdateEventsStats(session.SessionID, 1, 0); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileSwipe(session, m)
|
|
case *messages.MobileInputEvent:
|
|
if err := s.pg.InsertMobileInputEvent(session, m); err != nil {
|
|
return err
|
|
}
|
|
if err := s.sessions.UpdateEventsStats(session.SessionID, 1, 0); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileInput(session, m)
|
|
case *messages.MobileNetworkCall:
|
|
if err := s.pg.InsertMobileNetworkCall(session, m); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileRequest(session, m, session.SaveRequestPayload)
|
|
case *messages.MobileCrash:
|
|
if err := s.pg.InsertMobileCrash(session.SessionID, session.ProjectID, m); err != nil {
|
|
return err
|
|
}
|
|
if err := s.sessions.UpdateIssuesStats(session.SessionID, 1, 1000); err != nil {
|
|
return err
|
|
}
|
|
return s.ch.InsertMobileCrash(session, m)
|
|
}
|
|
return nil
|
|
}
|