// LookupSet looks up all label values for a given label name and returns them // as a set. Looking up a non-existing label name is not an error. In that case, // (nil, false, nil) is returned. // // This method is goroutine-safe. func (i *LabelNameLabelValuesIndex) LookupSet(l model.LabelName) (values map[model.LabelValue]struct{}, ok bool, err error) { ok, err = i.Get(codable.LabelName(l), (*codable.LabelValueSet)(&values)) if values == nil { values = map[model.LabelValue]struct{}{} } return }
// IndexBatch adds a batch of label name to label values mappings to the // index. A mapping of a label name to an empty slice of label values results in // a deletion of that mapping from the index. // // While this method is fundamentally goroutine-safe, note that the order of // execution for multiple batches executed concurrently is undefined. func (i *LabelNameLabelValuesIndex) IndexBatch(b LabelNameLabelValuesMapping) error { batch := i.NewBatch() for name, values := range b { if len(values) == 0 { if err := batch.Delete(codable.LabelName(name)); err != nil { return err } } else { if err := batch.Put(codable.LabelName(name), values); err != nil { return err } } } return i.Commit(batch) }
// Lookup looks up all label values for a given label name and returns them as // model.LabelValues (which is a slice). Looking up a non-existing label // name is not an error. In that case, (nil, false, nil) is returned. // // This method is goroutine-safe. func (i *LabelNameLabelValuesIndex) Lookup(l model.LabelName) (values model.LabelValues, ok bool, err error) { ok, err = i.Get(codable.LabelName(l), (*codable.LabelValues)(&values)) return }