github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/lib/filter/paramset.go (about)

     1  // Package filter - Content managed by Project Forge, see [projectforge.md] for details.
     2  package filter
     3  
     4  import (
     5  	"strings"
     6  
     7  	"github.com/samber/lo"
     8  
     9  	"github.com/kyleu/dbaudit/app/util"
    10  )
    11  
    12  type ParamSet map[string]*Params
    13  
    14  func (s ParamSet) Get(key string, allowed []string, logger util.Logger) *Params {
    15  	x, ok := s[key]
    16  	if !ok {
    17  		return &Params{Key: key}
    18  	}
    19  	return x.Filtered(allowed, logger).Sanitize(key)
    20  }
    21  
    22  func (s ParamSet) Specifies(key string) bool {
    23  	x, ok := s[key]
    24  	if !ok {
    25  		return false
    26  	}
    27  	return !x.IsDefault()
    28  }
    29  
    30  func (s ParamSet) String() string {
    31  	return strings.Join(lo.Map(lo.Values(s), func(p *Params, _ int) string {
    32  		return p.String()
    33  	}), ", ")
    34  }