openreplay/backend/pkg/db/cache/project.go
2022-03-06 17:30:27 +01:00

39 lines
1 KiB
Go

package cache
import (
. "openreplay/backend/pkg/db/types"
"time"
)
func (c *PGCache) GetProjectByKey(projectKey string) (*Project, error) {
pmInterface, found := c.projectsByKeys.Load(projectKey)
if found {
if pm, ok := pmInterface.(*ProjectMeta); ok {
if time.Now().Before(pm.expirationTime) {
return pm.Project, nil
}
}
}
p, err := c.Conn.GetProjectByKey(projectKey)
if err != nil {
return nil, err
}
//c.projects[ p.ProjectID ] = &ProjectMeta{ p, time.Now().Add(c.projectExpirationTimeout) }
c.projectsByKeys.Store(projectKey, p)
return p, nil
}
func (c *PGCache) GetProject(projectID uint32) (*Project, error) {
if c.projects[projectID] != nil &&
time.Now().Before(c.projects[projectID].expirationTime) {
return c.projects[projectID].Project, nil
}
p, err := c.Conn.GetProject(projectID)
if err != nil {
return nil, err
}
c.projects[projectID] = &ProjectMeta{p, time.Now().Add(c.projectExpirationTimeout)}
//c.projectsByKeys.Store(p.ProjectKey, c.projects[ projectID ])
return p, nil
}