openreplay/backend/pkg/db/cache/session.go
Alexander 7421154939
Ch improvements (#705)
* feat(backend): in-memory batches for click house
* feat(backend): new scheme for ClickHouse tables
2022-08-31 19:00:26 +02:00

31 lines
627 B
Go

package cache
import (
"errors"
"github.com/jackc/pgx/v4"
. "openreplay/backend/pkg/db/types"
)
var NilSessionInCacheError = errors.New("nil session in error")
func (c *PGCache) GetSession(sessionID uint64) (*Session, error) {
if s, inCache := c.sessions[sessionID]; inCache {
if s == nil {
return s, NilSessionInCacheError
}
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)
}