diff --git a/backend/pkg/db/cache/messages_common.go b/backend/pkg/db/cache/messages_common.go index 63c63d773..1e45cdff1 100644 --- a/backend/pkg/db/cache/messages_common.go +++ b/backend/pkg/db/cache/messages_common.go @@ -1,12 +1,11 @@ package cache -import ( - "database/sql" +import ( . "openreplay/backend/pkg/messages" -// . "openreplay/backend/pkg/db/types" + // . "openreplay/backend/pkg/db/types" ) -func (c *PGCache) insertSessionEnd(sessionID uint64, timestamp uint64 ) error { +func (c *PGCache) insertSessionEnd(sessionID uint64, timestamp uint64) error { //duration, err := c.Conn.InsertSessionEnd(sessionID, timestamp) _, err := c.Conn.InsertSessionEnd(sessionID, timestamp) if err != nil { @@ -21,7 +20,6 @@ func (c *PGCache) insertSessionEnd(sessionID uint64, timestamp uint64 ) error { return nil } - func (c *PGCache) InsertIssueEvent(sessionID uint64, crash *IssueEvent) error { session, err := c.GetSession(sessionID) if err != nil { @@ -30,7 +28,6 @@ func (c *PGCache) InsertIssueEvent(sessionID uint64, crash *IssueEvent) error { return c.Conn.InsertIssueEvent(sessionID, session.ProjectID, crash) } - func (c *PGCache) InsertUserID(sessionID uint64, userID *IOSUserID) error { if err := c.Conn.InsertIOSUserID(sessionID, userID); err != nil { return err @@ -39,7 +36,7 @@ func (c *PGCache) InsertUserID(sessionID uint64, userID *IOSUserID) error { if err != nil { return err } - session.UserID = sql.NullString{userID.Value,true} + session.UserID = userID.Value return nil } @@ -51,7 +48,7 @@ func (c *PGCache) InsertUserAnonymousID(sessionID uint64, userAnonymousID *IOSUs if err != nil { return err } - session.UserAnonymousID = sql.NullString{userAnonymousID.Value,true} + session.UserAnonymousID = &userAnonymousID.Value return nil } @@ -70,11 +67,9 @@ func (c *PGCache) InsertMetadata(sessionID uint64, metadata *Metadata) error { if keyNo == 0 { // insert project metadata } - if err := c.Conn.InsertMetadata(sessionID, keyNo, metadata.Value); err != nil { return err } - session.SetMetadata(keyNo, metadata.Value) return nil } diff --git a/backend/pkg/db/cache/messages_web.go b/backend/pkg/db/cache/messages_web.go index e28bea0b8..f1724e096 100644 --- a/backend/pkg/db/cache/messages_web.go +++ b/backend/pkg/db/cache/messages_web.go @@ -2,42 +2,40 @@ package cache import ( "errors" - "log" . "openreplay/backend/pkg/db/types" . "openreplay/backend/pkg/messages" ) - func (c *PGCache) InsertWebSessionStart(sessionID uint64, s *SessionStart) error { - if c.sessions[ sessionID ] != nil { + if c.sessions[sessionID] != nil { return errors.New("This session already in cache!") } - c.sessions[ sessionID ] = &Session{ - SessionID: sessionID, - Platform: "web", - Timestamp: s.Timestamp, - ProjectID: uint32(s.ProjectID), + c.sessions[sessionID] = &Session{ + SessionID: sessionID, + Platform: "web", + 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, + RevID: s.RevID, + UserUUID: s.UserUUID, + UserOS: s.UserOS, + UserOSVersion: s.UserOSVersion, + UserDevice: s.UserDevice, + UserCountry: s.UserCountry, // web properties (TODO: unite different platform types) - UserAgent: s.UserAgent, - UserBrowser: s.UserBrowser, - UserBrowserVersion: s.UserBrowserVersion, - UserDeviceType: s.UserDeviceType, + UserAgent: s.UserAgent, + UserBrowser: s.UserBrowser, + UserBrowserVersion: s.UserBrowserVersion, + UserDeviceType: s.UserDeviceType, UserDeviceMemorySize: s.UserDeviceMemorySize, - UserDeviceHeapSize: s.UserDeviceHeapSize, - UserID: s.UserID, + UserDeviceHeapSize: s.UserDeviceHeapSize, + UserID: s.UserID, } - if err := c.Conn.InsertSessionStart(sessionID, c.sessions[ sessionID ]); err != nil { - c.sessions[ sessionID ] = nil + if err := c.Conn.InsertSessionStart(sessionID, c.sessions[sessionID]); err != nil { + c.sessions[sessionID] = nil return err } - return nil; + return nil } func (c *PGCache) InsertWebSessionEnd(sessionID uint64, e *SessionEnd) error { @@ -45,18 +43,13 @@ func (c *PGCache) InsertWebSessionEnd(sessionID uint64, e *SessionEnd) error { } func (c *PGCache) InsertWebErrorEvent(sessionID uint64, e *ErrorEvent) error { - log.Println(">>InsertWebErrorEvent") session, err := c.GetSession(sessionID) if err != nil { - log.Println("session not found") - log.Println(err) return err } - log.Println(">>InsertWebErrorEvent to DB") if err := c.Conn.InsertWebErrorEvent(sessionID, session.ProjectID, e); err != nil { return err } session.ErrorsCount += 1 return nil } - diff --git a/backend/pkg/db/postgres/session.go b/backend/pkg/db/postgres/session.go index 4f9a1fea6..7148d9871 100644 --- a/backend/pkg/db/postgres/session.go +++ b/backend/pkg/db/postgres/session.go @@ -1,15 +1,13 @@ package postgres //import . "openreplay/backend/pkg/messages" -import ( - "log" - . "openreplay/backend/pkg/db/types" -) +import . "openreplay/backend/pkg/db/types" + //import "log" func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { - s := &Session{ SessionID: sessionID } - //var revID, userOSVersion *string + s := &Session{SessionID: sessionID} + var revID, userOSVersion *string if err := conn.queryRow(` SELECT platform, duration, project_id, start_ts, @@ -24,24 +22,21 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { `, sessionID, ).Scan(&s.Platform, - &s.Duration, &s.ProjectID, &s.Timestamp, - &s.UserUUID, &s.UserOS, &s.UserOSVersion, - &s.UserDevice, &s.UserDeviceType, &s.UserCountry, - &s.RevID, &s.TrackerVersion, - &s.UserID, &s.UserAnonymousID, - &s.Metadata1, &s.Metadata2, &s.Metadata3, &s.Metadata4, &s.Metadata5, - &s.Metadata6, &s.Metadata7, &s.Metadata8, &s.Metadata9, &s.Metadata10); err != nil { - log.Println(">>error DB scan for sessionId:") - log.Println(sessionID) - log.Println(err) + &s.Duration, &s.ProjectID, &s.Timestamp, + &s.UserUUID, &s.UserOS, &userOSVersion, + &s.UserDevice, &s.UserDeviceType, &s.UserCountry, + &revID, &s.TrackerVersion, + &s.UserID, &s.UserAnonymousID, + &s.Metadata1, &s.Metadata2, &s.Metadata3, &s.Metadata4, &s.Metadata5, + &s.Metadata6, &s.Metadata7, &s.Metadata8, &s.Metadata9, &s.Metadata10); err != nil { return nil, err } - //if userOSVersion != nil { // TODO: choose format, make f - // s.UserOSVersion = *userOSVersion - //} - //if revID != nil { - // s.RevID = *revID - //} + if userOSVersion != nil { // TODO: choose format, make f + s.UserOSVersion = *userOSVersion + } + if revID != nil { + s.RevID = *revID + } return s, nil } @@ -109,4 +104,4 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { // } // } // return list -// } \ No newline at end of file +// } diff --git a/backend/pkg/db/types/session.go b/backend/pkg/db/types/session.go index 5a841a6d3..6628fe54f 100644 --- a/backend/pkg/db/types/session.go +++ b/backend/pkg/db/types/session.go @@ -1,35 +1,33 @@ package types -import "database/sql" - type Session struct { - SessionID uint64 `db:"session_id" json:"session_id;omitempty"` - Timestamp uint64 `db:"start_ts" json:"start_ts;omitempty"` - ProjectID uint32 `db:"project_id" json:"project_id;omitempty"` - TrackerVersion sql.NullString `db:"tracker_version" json:"tracker_version;omitempty"` - RevID sql.NullString `db:"rev_id" json:"rev_id;omitempty"` - UserUUID string `db:"user_uuid" json:"user_uuid;omitempty"` - UserOS sql.NullString `db:"user_os" json:"user_os;omitempty"` - UserOSVersion sql.NullString `db:"user_os_version" json:"user_os_version;omitempty"` - UserDevice sql.NullString `db:"user_device" json:"user_device;omitempty"` - UserCountry string `db:"user_country" json:"user_country;omitempty"` + SessionID uint64 + Timestamp uint64 + ProjectID uint32 + TrackerVersion string + RevID string + UserUUID string + UserOS string + UserOSVersion string + UserDevice string + UserCountry string - Duration *uint64 `db:"duration" json:"duration;omitempty"` + Duration *uint64 PagesCount int EventsCount int ErrorsCount int - UserID sql.NullString `db:"user_id" json:"user_id;omitempty"` - UserAnonymousID sql.NullString `db:"user_anonymous_id" json:"user_anonymous_id;omitempty"` - Metadata1 sql.NullString `db:"metadata_1" json:"metadata_1;omitempty"` - Metadata2 sql.NullString `db:"metadata_2" json:"metadata_2;omitempty"` - Metadata3 sql.NullString `db:"metadata_3" json:"metadata_3;omitempty"` - Metadata4 sql.NullString `db:"metadata_4" json:"metadata_4;omitempty"` - Metadata5 sql.NullString `db:"metadata_5" json:"metadata_5;omitempty"` - Metadata6 sql.NullString `db:"metadata_6" json:"metadata_6;omitempty"` - Metadata7 sql.NullString `db:"metadata_7" json:"metadata_7;omitempty"` - Metadata8 sql.NullString `db:"metadata_8" json:"metadata_8;omitempty"` - Metadata9 sql.NullString `db:"metadata_9" json:"metadata_9;omitempty"` - Metadata10 sql.NullString `db:"metadata_10" json:"metadata_10;omitempty"` + UserID string // pointer?? + UserAnonymousID *string + Metadata1 *string + Metadata2 *string + Metadata3 *string + Metadata4 *string + Metadata5 *string + Metadata6 *string + Metadata7 *string + Metadata8 *string + Metadata9 *string + Metadata10 *string Platform string // Only-web properties @@ -44,24 +42,24 @@ type Session struct { func (s *Session) SetMetadata(keyNo uint, value string) { switch keyNo { case 1: - s.Metadata1 = sql.NullString{value,true} + s.Metadata1 = &value case 2: - s.Metadata2 = sql.NullString{value,true} + s.Metadata2 = &value case 3: - s.Metadata3 = sql.NullString{value,true} + s.Metadata3 = &value case 4: - s.Metadata4 = sql.NullString{value,true} + s.Metadata4 = &value case 5: - s.Metadata5 = sql.NullString{value,true} + s.Metadata5 = &value case 6: - s.Metadata6 = sql.NullString{value,true} + s.Metadata6 = &value case 7: - s.Metadata7 = sql.NullString{value,true} + s.Metadata7 = &value case 8: - s.Metadata8 = sql.NullString{value,true} + s.Metadata8 = &value case 9: - s.Metadata9 = sql.NullString{value,true} + s.Metadata9 = &value case 10: - s.Metadata10 = sql.NullString{value,true} + s.Metadata10 = &value } } diff --git a/backend/services/db/main.go b/backend/services/db/main.go index 275ce8ad5..5d2759c90 100644 --- a/backend/services/db/main.go +++ b/backend/services/db/main.go @@ -2,7 +2,6 @@ package main import ( "log" - "reflect" "time" "os" @@ -36,11 +35,7 @@ func main() { env.String("TOPIC_TRIGGER"), }, func(sessionID uint64, msg messages.Message, _ *types.Meta) { - log.Println(">>Insert message") - log.Println(reflect.TypeOf(msg)) if err := insertMessage(sessionID, msg); err != nil { - log.Println(">>Error") - log.Println(err) if !postgres.IsPkeyViolation(err) { log.Printf("Message Insertion Error %v, SessionID: %v, Message: %v", err, sessionID, msg) }