github.com/haalcala/mattermost-server-change-repo/v5@v5.33.2/store/localcachelayer/scheme_layer.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package localcachelayer 5 6 import ( 7 "github.com/mattermost/mattermost-server/v5/model" 8 "github.com/mattermost/mattermost-server/v5/store" 9 ) 10 11 type LocalCacheSchemeStore struct { 12 store.SchemeStore 13 rootStore *LocalCacheStore 14 } 15 16 func (s *LocalCacheSchemeStore) handleClusterInvalidateScheme(msg *model.ClusterMessage) { 17 if msg.Data == ClearCacheMessageData { 18 s.rootStore.schemeCache.Purge() 19 } else { 20 s.rootStore.schemeCache.Remove(msg.Data) 21 } 22 } 23 24 func (s LocalCacheSchemeStore) Save(scheme *model.Scheme) (*model.Scheme, error) { 25 if scheme.Id != "" { 26 defer s.rootStore.doInvalidateCacheCluster(s.rootStore.schemeCache, scheme.Id) 27 } 28 return s.SchemeStore.Save(scheme) 29 } 30 31 func (s LocalCacheSchemeStore) Get(schemeId string) (*model.Scheme, error) { 32 var scheme *model.Scheme 33 if err := s.rootStore.doStandardReadCache(s.rootStore.schemeCache, schemeId, &scheme); err == nil { 34 return scheme, nil 35 } 36 37 scheme, err := s.SchemeStore.Get(schemeId) 38 if err != nil { 39 return nil, err 40 } 41 42 s.rootStore.doStandardAddToCache(s.rootStore.schemeCache, schemeId, scheme) 43 44 return scheme, nil 45 } 46 47 func (s LocalCacheSchemeStore) Delete(schemeId string) (*model.Scheme, error) { 48 defer s.rootStore.doInvalidateCacheCluster(s.rootStore.schemeCache, schemeId) 49 defer s.rootStore.doClearCacheCluster(s.rootStore.roleCache) 50 defer s.rootStore.doClearCacheCluster(s.rootStore.rolePermissionsCache) 51 return s.SchemeStore.Delete(schemeId) 52 } 53 54 func (s LocalCacheSchemeStore) PermanentDeleteAll() error { 55 defer s.rootStore.doClearCacheCluster(s.rootStore.schemeCache) 56 defer s.rootStore.doClearCacheCluster(s.rootStore.roleCache) 57 defer s.rootStore.doClearCacheCluster(s.rootStore.rolePermissionsCache) 58 return s.SchemeStore.PermanentDeleteAll() 59 }