openreplay/ee/backend/pkg/db/clickhouse/messages_ios.go
2021-05-03 17:53:25 +02:00

180 lines
4.8 KiB
Go

package clickhouse
import (
"errors"
"openreplay/backend/pkg/hashid"
"openreplay/backend/pkg/url"
. "openreplay/backend/pkg/db/types"
. "openreplay/backend/pkg/messages"
)
// TODO: join sessions & sessions_ios clcikhouse tables
func (conn *Connector) InsertIOSSession(session *Session) error {
if (session.Duration == nil) {
return errors.New("Clickhouse: trying to insert session with ")
}
return conn.sessionsIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(session.Timestamp),
uint32(*session.Duration),
session.PagesCount,
session.EventsCount,
session.ErrorsCount,
session.Metadata1,
session.Metadata2,
session.Metadata3,
session.Metadata4,
session.Metadata5,
session.Metadata6,
session.Metadata7,
session.Metadata8,
session.Metadata9,
session.Metadata10,
)
}
// func (conn *Connector) IOSScreenEnter(session *Session, msg *PageEvent) error {
// return conn.pagesIOS.exec(
// session.SessionID,
// session.ProjectID,
// session.TrackerVersion, nullableString(session.RevID),
// session.UserUUID,
// session.UserOS,
// nullableString(session.UserOSVersion),
// nullableString(session.UserDevice),
// session.UserDeviceType,
// session.UserCountry,
// datetime(msg.Timestamp),
// utils.DiscardURLQuery(msg.URL),
// nullableUint16(uint16(msg.RequestStart)),
// nullableUint16(uint16(msg.ResponseStart)),
// nullableUint16(uint16(msg.ResponseEnd)),
// nullableUint16(uint16(msg.DomContentLoadedEventStart)),
// nullableUint16(uint16(msg.DomContentLoadedEventEnd)),
// nullableUint16(uint16(msg.LoadEventStart)),
// nullableUint16(uint16(msg.LoadEventEnd)),
// nullableUint16(uint16(msg.FirstPaint)),
// nullableUint16(uint16(msg.FirstContentfulPaint)),
// nullableUint16(uint16(msg.SpeedIndex)),
// nullableUint16(uint16(msg.VisuallyComplete)),
// nullableUint16(uint16(msg.TimeToInteractive)),
// )
// }
func (conn *Connector) InsertIOSClickEvent(session *Session, msg *IOSClickEvent) error {
if msg.Label == "" {
return nil
}
return conn.clicksIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(msg.Timestamp),
msg.Label,
)
}
func (conn *Connector) InsertIOSInputEvent(session *Session, msg *IOSInputEvent) error {
if msg.Label == "" {
return nil
}
return conn.inputsIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(msg.Timestamp),
msg.Label,
)
}
func (conn *Connector) InsertIOSCrash(session *Session, msg *IOSCrash) error {
return conn.crashesIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(msg.Timestamp),
msg.Name,
msg.Reason,
hashid.IOSCrashID(session.ProjectID, msg),
)
}
func (conn *Connector) InsertIOSNetworkCall(session *Session, msg *IOSNetworkCall) error {
return conn.resourcesIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(msg.Timestamp),
url.DiscardURLQuery(msg.URL),
nullableUint16(uint16(msg.Duration)),
nullableUint32(uint32(len(msg.Body))),
msg.Success,
url.EnsureMethod(msg.Method), // nullableString causes error "unexpected type *string"
nullableUint16(uint16(msg.Status)),
)
}
func (conn *Connector) InsertIOSPerformanceAggregated(session *Session, msg *IOSPerformanceAggregated) error {
var timestamp uint64 = (msg.TimestampStart + msg.TimestampEnd) / 2
return conn.performanceIOS.exec(
session.SessionID,
session.ProjectID,
session.TrackerVersion,
nullableString(session.RevID),
session.UserUUID,
session.UserOS,
nullableString(session.UserOSVersion),
nullableString(session.UserDevice),
session.UserDeviceType,
session.UserCountry,
datetime(timestamp),
uint8(msg.MinFPS),
uint8(msg.AvgFPS),
uint8(msg.MaxFPS),
uint8(msg.MinCPU),
uint8(msg.AvgCPU),
uint8(msg.MaxCPU),
msg.MinMemory,
msg.AvgMemory,
msg.MaxMemory,
)
}