github.com/vnforks/kid/v5@v5.22.1-0.20200408055009-b89d99c65676/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/vnforks/kid/v5/model" 8 "github.com/vnforks/kid/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 == CLEAR_CACHE_MESSAGE_DATA { 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, *model.AppError) { 25 if len(scheme.Id) != 0 { 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, *model.AppError) { 32 if scheme := s.rootStore.doStandardReadCache(s.rootStore.schemeCache, schemeId); scheme != nil { 33 return scheme.(*model.Scheme), nil 34 } 35 36 scheme, err := s.SchemeStore.Get(schemeId) 37 if err != nil { 38 return nil, err 39 } 40 41 s.rootStore.doStandardAddToCache(s.rootStore.schemeCache, schemeId, scheme) 42 43 return scheme, nil 44 } 45 46 func (s LocalCacheSchemeStore) Delete(schemeId string) (*model.Scheme, *model.AppError) { 47 defer s.rootStore.doInvalidateCacheCluster(s.rootStore.schemeCache, schemeId) 48 defer s.rootStore.doClearCacheCluster(s.rootStore.roleCache) 49 defer s.rootStore.doClearCacheCluster(s.rootStore.rolePermissionsCache) 50 return s.SchemeStore.Delete(schemeId) 51 } 52 53 func (s LocalCacheSchemeStore) PermanentDeleteAll() *model.AppError { 54 defer s.rootStore.doClearCacheCluster(s.rootStore.schemeCache) 55 defer s.rootStore.doClearCacheCluster(s.rootStore.roleCache) 56 defer s.rootStore.doClearCacheCluster(s.rootStore.rolePermissionsCache) 57 return s.SchemeStore.PermanentDeleteAll() 58 }