mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
added caching of signed in user DB calls
This commit is contained in:
parent
07d78da5ec
commit
93453c2d94
@ -16,6 +16,7 @@ import (
|
|||||||
m "github.com/grafana/grafana/pkg/models"
|
m "github.com/grafana/grafana/pkg/models"
|
||||||
"github.com/grafana/grafana/pkg/registry"
|
"github.com/grafana/grafana/pkg/registry"
|
||||||
"github.com/grafana/grafana/pkg/services/annotations"
|
"github.com/grafana/grafana/pkg/services/annotations"
|
||||||
|
"github.com/grafana/grafana/pkg/services/cache"
|
||||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrations"
|
"github.com/grafana/grafana/pkg/services/sqlstore/migrations"
|
||||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
||||||
"github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
|
"github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
|
||||||
@ -47,8 +48,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SqlStore struct {
|
type SqlStore struct {
|
||||||
Cfg *setting.Cfg `inject:""`
|
Cfg *setting.Cfg `inject:""`
|
||||||
Bus bus.Bus `inject:""`
|
Bus bus.Bus `inject:""`
|
||||||
|
CacheService *cache.CacheService `inject:""`
|
||||||
|
|
||||||
dbCfg DatabaseConfig
|
dbCfg DatabaseConfig
|
||||||
engine *xorm.Engine
|
engine *xorm.Engine
|
||||||
@ -148,9 +150,11 @@ func (ss *SqlStore) Init() error {
|
|||||||
|
|
||||||
// Init repo instances
|
// Init repo instances
|
||||||
annotations.SetRepository(&SqlAnnotationRepo{})
|
annotations.SetRepository(&SqlAnnotationRepo{})
|
||||||
|
|
||||||
ss.Bus.SetTransactionManager(ss)
|
ss.Bus.SetTransactionManager(ss)
|
||||||
|
|
||||||
|
// Register handlers
|
||||||
|
ss.addUserQueryAndCommandHandlers()
|
||||||
|
|
||||||
// ensure admin user
|
// ensure admin user
|
||||||
if ss.skipEnsureAdmin {
|
if ss.skipEnsureAdmin {
|
||||||
return nil
|
return nil
|
||||||
|
@ -15,8 +15,9 @@ import (
|
|||||||
"github.com/grafana/grafana/pkg/util"
|
"github.com/grafana/grafana/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func (ss *SqlStore) addUserQueryAndCommandHandlers() {
|
||||||
//bus.AddHandler("sql", CreateUser)
|
ss.Bus.AddHandler(ss.GetSignedInUser)
|
||||||
|
|
||||||
bus.AddHandler("sql", GetUserById)
|
bus.AddHandler("sql", GetUserById)
|
||||||
bus.AddHandler("sql", UpdateUser)
|
bus.AddHandler("sql", UpdateUser)
|
||||||
bus.AddHandler("sql", ChangeUserPassword)
|
bus.AddHandler("sql", ChangeUserPassword)
|
||||||
@ -25,7 +26,6 @@ func init() {
|
|||||||
bus.AddHandler("sql", SetUsingOrg)
|
bus.AddHandler("sql", SetUsingOrg)
|
||||||
bus.AddHandler("sql", UpdateUserLastSeenAt)
|
bus.AddHandler("sql", UpdateUserLastSeenAt)
|
||||||
bus.AddHandler("sql", GetUserProfile)
|
bus.AddHandler("sql", GetUserProfile)
|
||||||
bus.AddHandler("sql", GetSignedInUser)
|
|
||||||
bus.AddHandler("sql", SearchUsers)
|
bus.AddHandler("sql", SearchUsers)
|
||||||
bus.AddHandler("sql", GetUserOrgList)
|
bus.AddHandler("sql", GetUserOrgList)
|
||||||
bus.AddHandler("sql", DeleteUser)
|
bus.AddHandler("sql", DeleteUser)
|
||||||
@ -345,12 +345,18 @@ func GetUserOrgList(query *m.GetUserOrgListQuery) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSignedInUser(query *m.GetSignedInUserQuery) error {
|
func (ss *SqlStore) GetSignedInUser(query *m.GetSignedInUserQuery) error {
|
||||||
orgId := "u.org_id"
|
orgId := "u.org_id"
|
||||||
if query.OrgId > 0 {
|
if query.OrgId > 0 {
|
||||||
orgId = strconv.FormatInt(query.OrgId, 10)
|
orgId = strconv.FormatInt(query.OrgId, 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheKey := fmt.Sprintf("signed-in-user-%d-%s", query.UserId, query.OrgId)
|
||||||
|
if cached, found := ss.CacheService.Get(cacheKey); found {
|
||||||
|
query.Result = cached.(*m.SignedInUser)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var rawSql = `SELECT
|
var rawSql = `SELECT
|
||||||
u.id as user_id,
|
u.id as user_id,
|
||||||
u.is_admin as is_grafana_admin,
|
u.is_admin as is_grafana_admin,
|
||||||
@ -401,6 +407,7 @@ func GetSignedInUser(query *m.GetSignedInUserQuery) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
query.Result = &user
|
query.Result = &user
|
||||||
|
ss.CacheService.Set(cacheKey, &user, time.Second*5)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user