github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/logcli/labelquery/labels.go (about)

     1  package labelquery
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"time"
     7  
     8  	"github.com/grafana/loki/pkg/logcli/client"
     9  	"github.com/grafana/loki/pkg/loghttp"
    10  )
    11  
    12  // LabelQuery contains all necessary fields to execute label queries and print out the results
    13  type LabelQuery struct {
    14  	LabelName string
    15  	Quiet     bool
    16  	Start     time.Time
    17  	End       time.Time
    18  }
    19  
    20  // DoLabels prints out label results
    21  func (q *LabelQuery) DoLabels(c client.Client) {
    22  	values := q.ListLabels(c)
    23  
    24  	for _, value := range values {
    25  		fmt.Println(value)
    26  	}
    27  }
    28  
    29  // ListLabels returns an array of label strings
    30  func (q *LabelQuery) ListLabels(c client.Client) []string {
    31  	var labelResponse *loghttp.LabelResponse
    32  	var err error
    33  	if len(q.LabelName) > 0 {
    34  		labelResponse, err = c.ListLabelValues(q.LabelName, q.Quiet, q.Start, q.End)
    35  	} else {
    36  		labelResponse, err = c.ListLabelNames(q.Quiet, q.Start, q.End)
    37  	}
    38  	if err != nil {
    39  		log.Fatalf("Error doing request: %+v", err)
    40  	}
    41  	return labelResponse.Data
    42  }