feat(db): rollback changes
This commit is contained in:
parent
04d72e45e0
commit
e7cc039f97
5 changed files with 77 additions and 101 deletions
15
backend/pkg/db/cache/messages_common.go
vendored
15
backend/pkg/db/cache/messages_common.go
vendored
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
49
backend/pkg/db/cache/messages_web.go
vendored
49
backend/pkg/db/cache/messages_web.go
vendored
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
// }
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue