* feat(backend): refactored heuristics service * feat(backend): refactored db service (moved several events to heuristics)
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package cache
|
|
|
|
import (
|
|
"log"
|
|
. "openreplay/backend/pkg/messages"
|
|
"time"
|
|
)
|
|
|
|
func (c *PGCache) InsertSessionEnd(sessionID uint64, timestamp uint64) (uint64, error) {
|
|
return c.Conn.InsertSessionEnd(sessionID, timestamp)
|
|
}
|
|
|
|
func (c *PGCache) InsertSessionEncryptionKey(sessionID uint64, key []byte) error {
|
|
return c.Conn.InsertSessionEncryptionKey(sessionID, key)
|
|
}
|
|
|
|
func (c *PGCache) HandleSessionEnd(sessionID uint64) error {
|
|
if err := c.Conn.HandleSessionEnd(sessionID); err != nil {
|
|
log.Printf("can't handle session end: %s", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *PGCache) InsertIssueEvent(crash *IssueEvent) error {
|
|
sessionID := crash.SessionID()
|
|
session, err := c.Cache.GetSession(sessionID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return c.Conn.InsertIssueEvent(sessionID, session.ProjectID, crash)
|
|
}
|
|
|
|
func (c *PGCache) InsertMetadata(metadata *Metadata) error {
|
|
sessionID := metadata.SessionID()
|
|
session, err := c.Cache.GetSession(sessionID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
project, err := c.Cache.GetProject(session.ProjectID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
keyNo := project.GetMetadataNo(metadata.Key)
|
|
|
|
if keyNo == 0 {
|
|
// TODO: insert project metadata
|
|
return nil
|
|
}
|
|
if err := c.Conn.InsertMetadata(sessionID, keyNo, metadata.Value); err != nil {
|
|
// Try to insert metadata after one minute
|
|
time.AfterFunc(time.Minute, func() {
|
|
if err := c.Conn.InsertMetadata(sessionID, keyNo, metadata.Value); err != nil {
|
|
log.Printf("metadata retry err: %s", err)
|
|
}
|
|
})
|
|
return err
|
|
}
|
|
session.SetMetadata(keyNo, metadata.Value)
|
|
return nil
|
|
}
|