37 lines
1 KiB
Go
37 lines
1 KiB
Go
package cache
|
|
|
|
import (
|
|
"time"
|
|
. "openreplay/backend/pkg/db/types"
|
|
)
|
|
|
|
func (c *PGCache) GetProjectByKey(projectKey string) (*Project, error) {
|
|
if c.projectsByKeys[ projectKey ] != nil &&
|
|
time.Now().Before(c.projectsByKeys[ projectKey ].expirationTime) {
|
|
return c.projectsByKeys[ projectKey ].Project, nil
|
|
}
|
|
p, err := c.Conn.GetProjectByKey(projectKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
c.projectsByKeys[ projectKey ] = &ProjectMeta{ p, time.Now().Add(c.projectExpirationTimeout) }
|
|
c.projects[ p.ProjectID ] = c.projectsByKeys[ projectKey ]
|
|
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[ p.ProjectKey ] = c.projects[ projectID ]
|
|
return p, nil
|
|
}
|
|
|