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  }