package label

import (
	"context"

	"github.com/asim/go-micro/v3/selector"
)

type labelKey struct{}

type label struct {
	key string
	val string
}

// Label used in the priority label list
func Label(k, v string) selector.Option {
	return func(o *selector.Options) {
		l, ok := o.Context.Value(labelKey{}).([]label)
		if !ok {
			l = []label{}
		}
		l = append(l, label{k, v})
		o.Context = context.WithValue(o.Context, labelKey{}, l)
	}
}