30 lines
619 B
Go
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)
|
|
}
|