mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-11 05:59:22 +00:00
43 lines
877 B
Go
43 lines
877 B
Go
package cache
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
)
|
|
|
|
// SchemaCache is a cache for downloaded schemas, so each file is only retrieved once
|
|
// It is different from pkg/registry/http_cache.go in that:
|
|
// - This cache caches the parsed Schemas
|
|
type inMemory struct {
|
|
sync.RWMutex
|
|
schemas map[string]any
|
|
}
|
|
|
|
// New creates a new cache for downloaded schemas
|
|
func NewInMemoryCache() Cache {
|
|
return &inMemory{
|
|
schemas: make(map[string]any),
|
|
}
|
|
}
|
|
|
|
// Get retrieves the JSON schema given a resource signature
|
|
func (c *inMemory) Get(key string) (any, error) {
|
|
c.RLock()
|
|
defer c.RUnlock()
|
|
schema, ok := c.schemas[key]
|
|
|
|
if !ok {
|
|
return nil, fmt.Errorf("schema not found in in-memory cache")
|
|
}
|
|
|
|
return schema, nil
|
|
}
|
|
|
|
// Set adds a JSON schema to the schema cache
|
|
func (c *inMemory) Set(key string, schema any) error {
|
|
c.Lock()
|
|
defer c.Unlock()
|
|
c.schemas[key] = schema
|
|
|
|
return nil
|
|
}
|