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 }