github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/lib/schema/model/models.go (about)

     1  // Package model - Content managed by Project Forge, see [projectforge.md] for details.
     2  package model
     3  
     4  import (
     5  	"cmp"
     6  	"slices"
     7  
     8  	"github.com/samber/lo"
     9  
    10  	"github.com/kyleu/dbaudit/app/util"
    11  )
    12  
    13  type Models []*Model
    14  
    15  func (m Models) Get(pkg util.Pkg, key string) *Model {
    16  	return lo.FindOrElse(m, nil, func(x *Model) bool {
    17  		return x.Pkg.Equals(pkg) && x.Key == key
    18  	})
    19  }
    20  
    21  func (m Models) Sort() {
    22  	slices.SortFunc(m, func(l *Model, r *Model) int {
    23  		return cmp.Compare(l.Key, r.Key)
    24  	})
    25  }
    26  
    27  func (m Models) Names() []string {
    28  	return lo.Map(m, func(x *Model, _ int) string {
    29  		return x.Key
    30  	})
    31  }