Skip to main content

interface.go

interface.go - Overview

  1. Overview

This file defines the Reader, Querier, and QueryCache interfaces. These interfaces abstract data access and querying functionalities for metrics, traces, and logs, along with query caching mechanisms.

  1. Detailed Documentation

Reader Interface

The Reader interface defines a set of methods for reading data related to metrics, traces, and logs.

  • Purpose: Defines methods to read data from the storage.

  • Methods:

    • GetInstantQueryMetricsResult(ctx context.Context, query *model.InstantQueryMetricsParams) (*promql.Result, *stats.QueryStats, *model.ApiError)

      • Purpose: Executes an instant query for metrics.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.InstantQueryMetricsParams - Parameters for the instant query.
      • Returns:
        • *promql.Result: Result of the PromQL query.
        • *stats.QueryStats: Statistics about the query execution.
        • *model.ApiError: Error, if any.
    • GetQueryRangeResult(ctx context.Context, query *model.QueryRangeParams) (*promql.Result, *stats.QueryStats, *model.ApiError)

      • Purpose: Executes a range query for metrics.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.QueryRangeParams - Parameters for the range query.
      • Returns:
        • *promql.Result: Result of the PromQL query.
        • *stats.QueryStats: Statistics about the query execution.
        • *model.ApiError: Error, if any.
    • GetTopLevelOperations(ctx context.Context, skipConfig *model.SkipConfig, start, end time.Time, services []string) (*map[string][]string, *model.ApiError)

      • Purpose: Retrieves top-level operations within a specified time range and services.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • skipConfig: *model.SkipConfig - Configuration to skip certain operations.
        • start: time.Time - Start time.
        • end: time.Time - End time.
        • services: []string - List of services.
      • Returns:
        • *map[string][]string: Map of service to list of operations.
        • *model.ApiError: Error, if any.
    • GetServices(ctx context.Context, query *model.GetServicesParams, skipConfig *model.SkipConfig) (*[]model.ServiceItem, *model.ApiError)

      • Purpose: Retrieves a list of services.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.GetServicesParams - Parameters for the query.
        • skipConfig: *model.SkipConfig - Configuration to skip certain services.
      • Returns:
        • *[]model.ServiceItem: List of services.
        • *model.ApiError: Error, if any.
    • GetTopOperations(ctx context.Context, query *model.GetTopOperationsParams) (*[]model.TopOperationsItem, *model.ApiError)

      • Purpose: Retrieves a list of top operations.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.GetTopOperationsParams - Parameters for the query.
      • Returns:
        • *[]model.TopOperationsItem: List of top operations.
        • *model.ApiError: Error, if any.
    • GetUsage(ctx context.Context, query *model.GetUsageParams) (*[]model.UsageItem, error)

      • Purpose: Retrieves usage data.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.GetUsageParams - Parameters for the query.
      • Returns:
        • *[]model.UsageItem: List of usage items.
        • error: Error, if any.
    • GetServicesList(ctx context.Context) (*[]string, error)

      • Purpose: Retrieves a list of service names.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • *[]string: List of service names.
        • error: Error, if any.
    • GetDependencyGraph(ctx context.Context, query *model.GetServicesParams) (*[]model.ServiceMapDependencyResponseItem, error)

      • Purpose: Retrieves a dependency graph of services.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: *model.GetServicesParams - Parameters for the query.
      • Returns:
        • *[]model.ServiceMapDependencyResponseItem: List of service dependencies.
        • error: Error, if any.
    • GetTTL(ctx context.Context, orgID string, ttlParams *model.GetTTLParams) (*model.GetTTLResponseItem, *model.ApiError)

      • Purpose: Retrieves the Time-To-Live (TTL) configuration.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • orgID: string - The organization ID.
        • ttlParams: *model.GetTTLParams - Parameters for the TTL retrieval.
      • Returns:
        • *model.GetTTLResponseItem: TTL configuration.
        • *model.ApiError: Error, if any.
    • GetDisks(ctx context.Context) (*[]model.DiskItem, *model.ApiError)

      • Purpose: Retrieves a list of disks configured in the database.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • *[]model.DiskItem: List of disks.
        • *model.ApiError: Error, if any.
    • GetTraceAggregateAttributes(ctx context.Context, req *v3.AggregateAttributeRequest) (*v3.AggregateAttributeResponse, error)

      • Purpose: Retrieves aggregated attributes for traces.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.AggregateAttributeRequest - Request parameters.
      • Returns:
        • *v3.AggregateAttributeResponse: Aggregated attribute response.
        • error: Error, if any.
    • GetTraceAttributeKeys(ctx context.Context, req *v3.FilterAttributeKeyRequest) (*v3.FilterAttributeKeyResponse, error)

      • Purpose: Retrieves trace attribute keys based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeKeyRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeKeyResponse: Attribute key response.
        • error: Error, if any.
    • GetTraceAttributeValues(ctx context.Context, req *v3.FilterAttributeValueRequest) (*v3.FilterAttributeValueResponse, error)

      • Purpose: Retrieves trace attribute values based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeValueRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeValueResponse: Attribute value response.
        • error: Error, if any.
    • GetSpanAttributeKeys(ctx context.Context) (map[string]v3.AttributeKey, error)

      • Purpose: Retrieves all span attribute keys.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • map[string]v3.AttributeKey: Map of span attribute keys.
        • error: Error, if any.
    • ListErrors(ctx context.Context, params *model.ListErrorsParams) (*[]model.Error, *model.ApiError)

      • Purpose: Retrieves a list of errors.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.ListErrorsParams - Parameters for listing errors.
      • Returns:
        • *[]model.Error: List of errors.
        • *model.ApiError: Error, if any.
    • CountErrors(ctx context.Context, params *model.CountErrorsParams) (uint64, *model.ApiError)

      • Purpose: Counts the number of errors.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.CountErrorsParams - Parameters for counting errors.
      • Returns:
        • uint64: Count of errors.
        • *model.ApiError: Error, if any.
    • GetErrorFromErrorID(ctx context.Context, params *model.GetErrorParams) (*model.ErrorWithSpan, *model.ApiError)

      • Purpose: Retrieves an error with its associated span, based on the error ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.GetErrorParams - Parameters containing the error ID.
      • Returns:
        • *model.ErrorWithSpan: Error with associated span.
        • *model.ApiError: Error, if any.
    • GetErrorFromGroupID(ctx context.Context, params *model.GetErrorParams) (*model.ErrorWithSpan, *model.ApiError)

      • Purpose: Retrieves an error with its associated span, based on the group ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.GetErrorParams - Parameters containing the group ID.
      • Returns:
        • *model.ErrorWithSpan: Error with associated span.
        • *model.ApiError: Error, if any.
    • GetNextPrevErrorIDs(ctx context.Context, params *model.GetErrorParams) (*model.NextPrevErrorIDs, *model.ApiError)

      • Purpose: Retrieves the next and previous error IDs.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.GetErrorParams - Parameters for retrieving error IDs.
      • Returns:
        • *model.NextPrevErrorIDs: Next and previous error IDs.
        • *model.ApiError: Error, if any.
    • GetWaterfallSpansForTraceWithMetadata(ctx context.Context, traceID string, req *model.GetWaterfallSpansForTraceWithMetadataParams) (*model.GetWaterfallSpansForTraceWithMetadataResponse, *model.ApiError)

      • Purpose: Retrieves spans for a trace with metadata, formatted for waterfall view.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • traceID: string - Trace ID.
        • req: *model.GetWaterfallSpansForTraceWithMetadataParams - Request parameters.
      • Returns:
        • *model.GetWaterfallSpansForTraceWithMetadataResponse: Response containing spans and metadata.
        • *model.ApiError: Error, if any.
    • GetFlamegraphSpansForTrace(ctx context.Context, traceID string, req *model.GetFlamegraphSpansForTraceParams) (*model.GetFlamegraphSpansForTraceResponse, *model.ApiError)

      • Purpose: Retrieves spans for a trace, formatted for flamegraph view.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • traceID: string - Trace ID.
        • req: *model.GetFlamegraphSpansForTraceParams - Request parameters.
      • Returns:
        • *model.GetFlamegraphSpansForTraceResponse: Response containing spans for flamegraph.
        • *model.ApiError: Error, if any.
    • SetTTL(ctx context.Context, orgID string, ttlParams *model.TTLParams) (*model.SetTTLResponseItem, *model.ApiError)

      • Purpose: Sets the Time-To-Live (TTL) configuration.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • orgID: string - The organization ID.
        • ttlParams: *model.TTLParams - Parameters for setting the TTL.
      • Returns:
        • *model.SetTTLResponseItem: Response after setting TTL.
        • *model.ApiError: Error, if any.
    • FetchTemporality(ctx context.Context, metricNames []string) (map[string]map[v3.Temporality]bool, error)

      • Purpose: Fetches temporality information for given metric names.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • metricNames: []string - List of metric names.
      • Returns:
        • map[string]map[v3.Temporality]bool: Map of metric name to temporality information.
        • error: Error, if any.
    • GetMetricAggregateAttributes(ctx context.Context, req *v3.AggregateAttributeRequest, skipDotNames bool, skipSignozMetrics bool) (*v3.AggregateAttributeResponse, error)

      • Purpose: Retrieves aggregated attributes for metrics.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.AggregateAttributeRequest - Request parameters.
        • skipDotNames: bool - Flag to skip attributes with dot names.
        • skipSignozMetrics: bool - Flag to skip signoz metrics.
      • Returns:
        • *v3.AggregateAttributeResponse: Aggregated attribute response.
        • error: Error, if any.
    • GetMetricAttributeKeys(ctx context.Context, req *v3.FilterAttributeKeyRequest) (*v3.FilterAttributeKeyResponse, error)

      • Purpose: Retrieves metric attribute keys based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeKeyRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeKeyResponse: Attribute key response.
        • error: Error, if any.
    • GetMetricAttributeValues(ctx context.Context, req *v3.FilterAttributeValueRequest) (*v3.FilterAttributeValueResponse, error)

      • Purpose: Retrieves metric attribute values based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeValueRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeValueResponse: Attribute value response.
        • error: Error, if any.
    • GetLatestReceivedMetric(ctx context.Context, metricNames []string, labelValues map[string]string) (*model.MetricStatus, *model.ApiError)

      • Purpose: Retrieves the status of the latest received metric among the provided names.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • metricNames: []string - List of metric names to check.
        • labelValues: map[string]string - Map of label values to filter by.
      • Returns:
        • *model.MetricStatus: Status of the latest received metric.
        • *model.ApiError: Error, if any.
    • GetTimeSeriesResultV3(ctx context.Context, query string) ([]*v3.Series, error)

      • Purpose: Executes a query and returns time series results in V3 format.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: string - Query string.
      • Returns:
        • []*v3.Series: List of time series results.
        • error: Error, if any.
    • GetListResultV3(ctx context.Context, query string) ([]*v3.Row, error)

      • Purpose: Executes a query and returns list results in V3 format.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: string - Query string.
      • Returns:
        • []*v3.Row: List of results.
        • error: Error, if any.
    • LiveTailLogsV3(ctx context.Context, query string, timestampStart uint64, idStart string, client *model.LogsLiveTailClient)

      • Purpose: Starts a live tail of logs using V3 format.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: string - Query string.
        • timestampStart: uint64 - Starting timestamp.
        • idStart: string - Starting ID.
        • client: *model.LogsLiveTailClient - Client for receiving live logs.
    • LiveTailLogsV4(ctx context.Context, query string, timestampStart uint64, idStart string, client *model.LogsLiveTailClientV2)

      • Purpose: Starts a live tail of logs using V4 format.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: string - Query string.
        • timestampStart: uint64 - Starting timestamp.
        • idStart: string - Starting ID.
        • client: *model.LogsLiveTailClientV2 - Client for receiving live logs.
    • GetTotalSpans(ctx context.Context) (uint64, error)

      • Purpose: Retrieves the total number of spans.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • uint64: Total number of spans.
        • error: Error, if any.
    • GetTotalLogs(ctx context.Context) (uint64, error)

      • Purpose: Retrieves the total number of logs.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • uint64: Total number of logs.
        • error: Error, if any.
    • GetTotalSamples(ctx context.Context) (uint64, error)

      • Purpose: Retrieves the total number of samples.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • uint64: Total number of samples.
        • error: Error, if any.
    • GetSpansInLastHeartBeatInterval(ctx context.Context, interval time.Duration) (uint64, error)

      • Purpose: Retrieves the number of spans in the last heartbeat interval.

      • Parameters:

        • ctx: context.Context - Context for the request.
        • interval: time.Duration - Heartbeat interval.
      • Returns:

        • uint64: Number of spans.
        • error: Error, if any.
      • GetTimeSeriesInfo(ctx context.Context) (map[string]interface{}, error)

      • Purpose: Retrieves time series information.

      • Parameters:

        • ctx: context.Context - Context for the request.
      • Returns:

        • map[string]interface{}: Time series information.
        • error: Error, if any.
    • GetSamplesInfoInLastHeartBeatInterval(ctx context.Context, interval time.Duration) (uint64, error)

      • Purpose: Retrieves samples information in the last heartbeat interval.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • interval: time.Duration - Heartbeat interval.
      • Returns:
        • uint64: Samples information.
        • error: Error, if any.
    • GetLogsInfoInLastHeartBeatInterval(ctx context.Context, interval time.Duration) (uint64, error)

      • Purpose: Retrieves logs information in the last heartbeat interval.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • interval: time.Duration - Heartbeat interval.
      • Returns:
        • uint64: Logs information.
        • error: Error, if any.
    • GetTagsInfoInLastHeartBeatInterval(ctx context.Context, interval time.Duration) (*model.TagsInfo, error)

      • Purpose: Retrieves tags information in the last heartbeat interval.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • interval: time.Duration - Heartbeat interval.
      • Returns:
        • *model.TagsInfo: Tags information.
        • error: Error, if any.
    • GetDistributedInfoInLastHeartBeatInterval(ctx context.Context) (map[string]interface{}, error)

      • Purpose: Retrieves distributed tracing information in the last heartbeat interval.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • map[string]interface{}: Distributed tracing information.
        • error: Error, if any.
    • GetLogFields(ctx context.Context) (*model.GetFieldsResponse, *model.ApiError)

      • Purpose: Retrieves a list of log fields.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • *model.GetFieldsResponse: Response containing list of log fields.
        • *model.ApiError: Error, if any.
    • UpdateLogField(ctx context.Context, field *model.UpdateField) *model.ApiError

      • Purpose: Updates a log field.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • field: *model.UpdateField - Updated log field.
      • Returns:
        • *model.ApiError: Error, if any.
    • GetLogs(ctx context.Context, params *model.LogsFilterParams) (*[]model.SignozLog, *model.ApiError)

      • Purpose: Retrieves logs based on filter parameters.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.LogsFilterParams - Parameters for filtering logs.
      • Returns:
        • *[]model.SignozLog: List of logs.
        • *model.ApiError: Error, if any.
    • TailLogs(ctx context.Context, client *model.LogsTailClient)

      • Purpose: Tails logs and sends them to the provided client.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • client: *model.LogsTailClient - Client for receiving tailed logs.
    • AggregateLogs(ctx context.Context, params *model.LogsAggregateParams) (*model.GetLogsAggregatesResponse, *model.ApiError)

      • Purpose: Aggregates logs based on the provided parameters.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • params: *model.LogsAggregateParams - Parameters for aggregating logs.
      • Returns:
        • *model.GetLogsAggregatesResponse: Response containing aggregated logs.
        • *model.ApiError: Error, if any.
    • GetLogAttributeKeys(ctx context.Context, req *v3.FilterAttributeKeyRequest) (*v3.FilterAttributeKeyResponse, error)

      • Purpose: Retrieves log attribute keys based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeKeyRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeKeyResponse: Attribute key response.
        • error: Error, if any.
    • GetLogAttributeValues(ctx context.Context, req *v3.FilterAttributeValueRequest) (*v3.FilterAttributeValueResponse, error)

      • Purpose: Retrieves log attribute values based on the filter request.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.FilterAttributeValueRequest - Request parameters.
      • Returns:
        • *v3.FilterAttributeValueResponse: Attribute value response.
        • error: Error, if any.
    • GetLogAggregateAttributes(ctx context.Context, req *v3.AggregateAttributeRequest) (*v3.AggregateAttributeResponse, error)

      • Purpose: Retrieves aggregated attributes for logs.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.AggregateAttributeRequest - Request parameters.
      • Returns:
        • *v3.AggregateAttributeResponse: Aggregated attribute response.
        • error: Error, if any.
    • GetQBFilterSuggestionsForLogs(ctx context.Context, req *v3.QBFilterSuggestionsRequest) (*v3.QBFilterSuggestionsResponse, *model.ApiError)

      • Purpose: Retrieves query builder filter suggestions for logs.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • req: *v3.QBFilterSuggestionsRequest - Request parameters.
      • Returns:
        • *v3.QBFilterSuggestionsResponse: Response containing filter suggestions.
        • *model.ApiError: Error, if any.
    • QueryDashboardVars(ctx context.Context, query string) (*model.DashboardVar, error)

      • Purpose: Queries dashboard variables.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • query: string - Query string.
      • Returns:
        • *model.DashboardVar: Dashboard variable.
        • error: Error, if any.
    • CheckClickHouse(ctx context.Context) error

      • Purpose: Checks the connection to ClickHouse.
      • Parameters:
        • ctx: context.Context - Context for the request.
      • Returns:
        • error: Error, if any.
    • GetMetricMetadata(context.Context, string, string) (*v3.MetricMetadataResponse, error)

      • Purpose: Retrieves metadata for a metric.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • orgID: string - Organization ID.
        • metricName: string - Metric name.
      • Returns:
        • *v3.MetricMetadataResponse: Metric metadata.
        • error: Error, if any.
    • AddRuleStateHistory(ctx context.Context, ruleStateHistory []model.RuleStateHistory) error

      • Purpose: Adds rule state history.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleStateHistory: []model.RuleStateHistory - List of rule state history items.
      • Returns:
        • error: Error, if any.
    • GetOverallStateTransitions(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) ([]model.ReleStateItem, error)

      • Purpose: Retrieves overall state transitions for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • []model.ReleStateItem: List of state transitions.
        • error: Error, if any.
    • ReadRuleStateHistoryByRuleID(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) (*model.RuleStateTimeline, error)

      • Purpose: Reads rule state history by rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • *model.RuleStateTimeline: Rule state timeline.
        • error: Error, if any.
    • GetTotalTriggers(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) (uint64, error)

      • Purpose: Retrieves the total number of triggers for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • uint64: Total number of triggers.
        • error: Error, if any.
    • GetTriggersByInterval(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) (*v3.Series, error)

      • Purpose: Retrieves triggers by interval for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • *v3.Series: Time series data of triggers.
        • error: Error, if any.
    • GetAvgResolutionTime(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) (float64, error)

      • Purpose: Retrieves the average resolution time for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • float64: Average resolution time.
        • error: Error, if any.
    • GetAvgResolutionTimeByInterval(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) (*v3.Series, error)

      • Purpose: Retrieves the average resolution time by interval for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • *v3.Series: Time series data of average resolution time.
        • error: Error, if any.
    • ReadRuleStateHistoryTopContributorsByRuleID(ctx context.Context, ruleID string, params *model.QueryRuleStateHistory) ([]model.RuleStateHistoryContributor, error)

      • Purpose: Reads top contributors to rule state history by rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
        • params: *model.QueryRuleStateHistory - Parameters for the query.
      • Returns:
        • []model.RuleStateHistoryContributor: List of top contributors.
        • error: Error, if any.
    • GetLastSavedRuleStateHistory(ctx context.Context, ruleID string) ([]model.RuleStateHistory, error)

      • Purpose: Retrieves the last saved rule state history for a given rule ID.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • ruleID: string - Rule ID.
      • Returns:
        • []model.RuleStateHistory: List of rule state history items.
        • error: Error, if any.
    • GetMinAndMaxTimestampForTraceID(ctx context.Context, traceID []string) (int64, int64, error)

      • Purpose: Retrieves the minimum and maximum timestamps for the provided trace IDs.
      • Parameters:
        • ctx: context.Context - Context for the request.
        • traceID: []string - List of trace IDs.
      • Returns:
        • int64: Minimum timestamp.
        • int64: Maximum timestamp.
        • error: Error, if any.
    • ReportQueryStartForProgressTracking(queryId string) (reportQueryFinished func(), err *model.ApiError)

      • Purpose: Reports the start of a query for progress tracking.
      • Parameters:
        • queryId: string - ID of the query.
      • Returns:
        • reportQueryFinished func(): Function to call when the query is finished.
        • err: *model.ApiError - Error, if any.
    • SubscribeToQueryProgress(queryId string) (<-chan model.QueryProgress, func(), *model.ApiError)

      • Purpose: Subscribes to query progress updates.
      • Parameters:
        • queryId: string - ID of the query.
      • Returns:
        • <-chan model.QueryProgress: Channel for receiving progress updates.
        • func(): Function to unsubscribe.
        • *model.ApiError: Error, if any.
    • `GetCountOfThings(ctx context.Context, query string