39 lines
990 B
Go
39 lines
990 B
Go
package postgres
|
|
|
|
// Mechanism of combination several session updates into one
|
|
const sessionUpdateReq = `UPDATE sessions SET pages_count = pages_count + $1, events_count = events_count + $2, errors_count = errors_count + $3, issue_score = issue_score + $4 WHERE session_id = $5`
|
|
|
|
type sessionUpdates struct {
|
|
sessionID uint64
|
|
pages int
|
|
events int
|
|
errors int
|
|
issues int
|
|
}
|
|
|
|
func NewSessionUpdates(sessionID uint64) *sessionUpdates {
|
|
return &sessionUpdates{
|
|
sessionID: sessionID,
|
|
pages: 0,
|
|
events: 0,
|
|
errors: 0,
|
|
issues: 0,
|
|
}
|
|
}
|
|
|
|
func (su *sessionUpdates) addEvents(pages, events int) {
|
|
su.pages += pages
|
|
su.events += events
|
|
}
|
|
|
|
func (su *sessionUpdates) addIssues(errors, issues int) {
|
|
su.errors += errors
|
|
su.issues += issues
|
|
}
|
|
|
|
func (su *sessionUpdates) request() (string, []interface{}) {
|
|
if su.pages == 0 && su.events == 0 {
|
|
return "", nil
|
|
}
|
|
return sessionUpdateReq, []interface{}{su.pages, su.events, su.errors, su.issues, su.sessionID}
|
|
}
|