v2/internal/util/kubeclient/and_indexer.go (23 lines of code) (raw):
/*
* Copyright (c) Microsoft Corporation.
* Licensed under the MIT license.
*/
package kubeclient
import (
"context"
"sigs.k8s.io/controller-runtime/pkg/client"
)
type andIndexer struct {
indexers []client.FieldIndexer
}
func NewAndIndexer(indexers ...client.FieldIndexer) client.FieldIndexer {
return &andIndexer{
indexers: indexers,
}
}
var _ client.FieldIndexer = &andIndexer{}
func (a *andIndexer) IndexField(ctx context.Context, obj client.Object, field string, extractValue client.IndexerFunc) error {
for _, indexer := range a.indexers {
err := indexer.IndexField(ctx, obj, field, extractValue)
if err != nil {
return err
}
}
return nil
}