chore: update store cache

This commit is contained in:
Steven 2024-05-12 13:19:31 +08:00
parent 93e8fa4912
commit cf423026a5
6 changed files with 19 additions and 8 deletions

View file

@ -5,5 +5,5 @@ import (
)
func getUserSettingCacheKey(userID int32, key string) string {
return fmt.Sprintf("%d-%s-v1", userID, key)
return fmt.Sprintf("%d-%s", userID, key)
}

View file

@ -70,7 +70,10 @@ func (s *Store) ListIdentityProviders(ctx context.Context, find *FindIdentityPro
func (s *Store) GetIdentityProvider(ctx context.Context, find *FindIdentityProvider) (*storepb.IdentityProvider, error) {
if find.ID != nil {
if cache, ok := s.idpCache.Load(*find.ID); ok {
return cache.(*storepb.IdentityProvider), nil
identityProvider, ok := cache.(*storepb.IdentityProvider)
if ok {
return identityProvider, nil
}
}
}

View file

@ -13,7 +13,7 @@ type Store struct {
driver Driver
workspaceSettingCache sync.Map // map[string]*storepb.WorkspaceSetting
userCache sync.Map // map[int]*User
userSettingCache sync.Map // map[string]*UserSetting
userSettingCache sync.Map // map[string]*storepb.UserSetting
idpCache sync.Map // map[int]*storepb.IdentityProvider
}

View file

@ -131,9 +131,11 @@ func (s *Store) GetUser(ctx context.Context, find *FindUser) (*User, error) {
if *find.ID == SystemBotID {
return SystemBot, nil
}
if cache, ok := s.userCache.Load(*find.ID); ok {
return cache.(*User), nil
user, ok := cache.(*User)
if ok {
return user, nil
}
}
}

View file

@ -65,7 +65,10 @@ func (s *Store) ListUserSettings(ctx context.Context, find *FindUserSetting) ([]
func (s *Store) GetUserSetting(ctx context.Context, find *FindUserSetting) (*storepb.UserSetting, error) {
if find.UserID != nil {
if cache, ok := s.userSettingCache.Load(getUserSettingCacheKey(*find.UserID, find.Key.String())); ok {
return cache.(*storepb.UserSetting), nil
userSetting, ok := cache.(*storepb.UserSetting)
if ok {
return userSetting, nil
}
}
}

View file

@ -80,7 +80,10 @@ func (s *Store) ListWorkspaceSettings(ctx context.Context, find *FindWorkspaceSe
func (s *Store) GetWorkspaceSetting(ctx context.Context, find *FindWorkspaceSetting) (*storepb.WorkspaceSetting, error) {
if cache, ok := s.workspaceSettingCache.Load(find.Name); ok {
return cache.(*storepb.WorkspaceSetting), nil
workspaceSetting, ok := cache.(*storepb.WorkspaceSetting)
if ok {
return workspaceSetting, nil
}
}
list, err := s.ListWorkspaceSettings(ctx, find)
@ -91,7 +94,7 @@ func (s *Store) GetWorkspaceSetting(ctx context.Context, find *FindWorkspaceSett
return nil, nil
}
if len(list) > 1 {
return nil, errors.Errorf("Found multiple workspace settings with key %s", find.Name)
return nil, errors.Errorf("found multiple workspace settings with key %s", find.Name)
}
return list[0], nil
}