Ai
1 Star 0 Fork 0

ryancartoon/sensu-go

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
subscription.go 2.43 KB
Copy Edit Raw Blame History
package graphql
import (
"sort"
"github.com/sensu/sensu-go/backend/apid/graphql/schema"
"github.com/sensu/sensu-go/graphql"
"github.com/sensu/sensu-go/util/strings"
)
var _ schema.SubscriptionSetFieldResolvers = (*subscriptionSetImpl)(nil)
//
// Implement SubscriptionSetFieldResolvers
//
type subscriptionSetImpl struct{}
// Entries implements response to request for 'entries' field.
func (subscriptionSetImpl) Entries(p schema.SubscriptionSetEntriesFieldResolverParams) (interface{}, error) {
set := p.Source.(subscriptionSet)
entries := set.entries()
l, h := clampSlice(p.Args.Offset, p.Args.Offset+p.Args.Limit, len(entries))
return entries[l:h], nil
}
// Values implements response to request for 'values' field.
func (subscriptionSetImpl) Values(p schema.SubscriptionSetValuesFieldResolverParams) ([]string, error) {
set := p.Source.(subscriptionSet)
values := set.values()
l, h := clampSlice(p.Args.Offset, p.Args.Offset+p.Args.Limit, len(values))
return values[l:h], nil
}
// Size implements response to request for 'size' field.
func (subscriptionSetImpl) Size(p graphql.ResolveParams) (int, error) {
set := p.Source.(subscriptionSet)
return set.size(), nil
}
// SubscriptionSet
type subscribable interface {
GetSubscriptions() []string
}
func occurrencesOfSubscriptions(record subscribable) strings.OccurrenceSet {
vls := record.GetSubscriptions()
return strings.NewOccurrenceSet(vls...)
}
type subscriptionSet struct {
occurrences strings.OccurrenceSet
vls []string
}
type subscriptionOccurrences struct {
Subscription string
Occurrences int
}
func newSubscriptionSet(set strings.OccurrenceSet) subscriptionSet {
return subscriptionSet{
occurrences: set,
vls: set.Values(),
}
}
func (set subscriptionSet) size() int {
return len(set.vls)
}
func (set subscriptionSet) entries() []subscriptionOccurrences {
occurrences := make([]subscriptionOccurrences, len(set.vls))
for i, v := range set.vls {
occurrences[i] = subscriptionOccurrences{v, set.occurrences.Get(v)}
}
return occurrences
}
func (set subscriptionSet) values() []string {
return set.vls
}
func (set subscriptionSet) sortByAlpha(asc bool) {
var vls sort.Interface = sort.StringSlice(set.vls)
if asc {
vls = sort.Reverse(vls)
}
sort.Sort(vls)
}
func (set subscriptionSet) sortByOccurrence() {
sort.Slice(set.vls, func(i, j int) bool {
a := set.occurrences.Get(set.vls[i])
b := set.occurrences.Get(set.vls[j])
return a > b
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ryancartoon/sensu-go.git
git@gitee.com:ryancartoon/sensu-go.git
ryancartoon
sensu-go
sensu-go
v5.10.1

Search