github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/connection/limiter_map.go (about)

     1  package connection
     2  
     3  import (
     4  	"github.com/turbot/steampipe/pkg/steampipeconfig/modconfig"
     5  	"golang.org/x/exp/maps"
     6  )
     7  
     8  // LimiterMap is a map of limiter name to limiter definition
     9  type LimiterMap map[string]*modconfig.RateLimiter
    10  
    11  func NewLimiterMap(limiters []*modconfig.RateLimiter) LimiterMap {
    12  	res := make(LimiterMap)
    13  	for _, l := range limiters {
    14  		res[l.Name] = l
    15  	}
    16  	return res
    17  }
    18  func (l LimiterMap) Equals(other LimiterMap) bool {
    19  	return maps.EqualFunc(l, other, func(l1, l2 *modconfig.RateLimiter) bool { return l1.Equals(l2) })
    20  }
    21  
    22  // ToPluginLimiterMap converts limiter map keyed by limiter name to a map of limiter maps keyed by plugin image ref
    23  func (l LimiterMap) ToPluginLimiterMap() PluginLimiterMap {
    24  	res := make(PluginLimiterMap)
    25  	for name, limiter := range l {
    26  		limitersForPlugin := res[limiter.Plugin]
    27  		if limitersForPlugin == nil {
    28  			limitersForPlugin = make(LimiterMap)
    29  		}
    30  		limitersForPlugin[name] = limiter
    31  		res[limiter.Plugin] = limitersForPlugin
    32  	}
    33  	return res
    34  }