github.com/grafana/pyroscope@v1.18.0/pkg/frontend/readpath/queryfrontend/query_get_profile_stats.go (about)

     1  package queryfrontend
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"connectrpc.com/connect"
     8  	"github.com/grafana/dskit/tenant"
     9  
    10  	metastorev1 "github.com/grafana/pyroscope/api/gen/proto/go/metastore/v1"
    11  	typesv1 "github.com/grafana/pyroscope/api/gen/proto/go/types/v1"
    12  )
    13  
    14  func (q *QueryFrontend) GetProfileStats(
    15  	ctx context.Context,
    16  	_ *connect.Request[typesv1.GetProfileStatsRequest],
    17  ) (*connect.Response[typesv1.GetProfileStatsResponse], error) {
    18  	tenants, err := tenant.TenantIDs(ctx)
    19  	if err != nil {
    20  		return nil, connect.NewError(connect.CodeInvalidArgument, err)
    21  	}
    22  
    23  	if len(tenants) != 1 {
    24  		return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("expected 1 tenant, got %d", len(tenants)))
    25  	}
    26  
    27  	resp, err := q.tenantServiceClient.GetTenant(ctx, &metastorev1.GetTenantRequest{
    28  		TenantId: tenants[0],
    29  	})
    30  	if err != nil {
    31  		return nil, connect.NewError(connect.CodeInternal, err)
    32  	}
    33  	stats := resp.GetStats()
    34  	return connect.NewResponse(&typesv1.GetProfileStatsResponse{
    35  		DataIngested:      stats.DataIngested,
    36  		OldestProfileTime: stats.OldestProfileTime,
    37  		NewestProfileTime: stats.NewestProfileTime,
    38  	}), nil
    39  }