openreplay/backend/pkg/db/cache/session.go
2021-05-03 17:53:25 +02:00

30 lines
619 B
Go

package cache
import (
"github.com/jackc/pgx/v4"
. "openreplay/backend/pkg/db/types"
)
func (c *PGCache) GetSession(sessionID uint64) (*Session, error) {
if s, inCache := c.sessions[ sessionID ]; inCache {
// TODO: review. Might cause bugs in case of multiple instances
if s == nil {
return nil, pgx.ErrNoRows
}
return s, nil
}
s, err := c.Conn.GetSession(sessionID)
if err == pgx.ErrNoRows {
c.sessions[ sessionID ] = nil
}
if err != nil {
return nil, err
}
c.sessions[ sessionID ] = s
return s, nil
}
func (c *PGCache) DeleteSession(sessionID uint64) {
delete(c.sessions, sessionID)
}