zotregistry.dev/zot@v1.4.4-0.20240314164342-eec277e14d20/pkg/extensions/search/cve/cache/cache.go (about) 1 package cache 2 3 import ( 4 lru "github.com/hashicorp/golang-lru/v2" 5 6 cvemodel "zotregistry.dev/zot/pkg/extensions/search/cve/model" 7 "zotregistry.dev/zot/pkg/log" 8 ) 9 10 type CveCache struct { 11 cache *lru.Cache[string, map[string]cvemodel.CVE] 12 log log.Logger 13 } 14 15 func NewCveCache(size int, log log.Logger) *CveCache { 16 cache, _ := lru.New[string, map[string]cvemodel.CVE](size) 17 18 return &CveCache{cache: cache, log: log} 19 } 20 21 func (cveCache *CveCache) Add(image string, cveMap map[string]cvemodel.CVE) { 22 cveCache.cache.Add(image, cveMap) 23 } 24 25 func (cveCache *CveCache) Contains(image string) bool { 26 return cveCache.cache.Contains(image) 27 } 28 29 func (cveCache *CveCache) Get(image string) map[string]cvemodel.CVE { 30 cveMap, ok := cveCache.cache.Get(image) 31 if !ok { 32 return nil 33 } 34 35 return cveMap 36 } 37 38 func (cveCache *CveCache) Purge() { 39 cveCache.cache.Purge() 40 }