2025-02-03 16:06:18 +08:00
|
|
|
package clientapi
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2025-07-15 14:31:57 +08:00
|
|
|
"net/http"
|
2025-07-18 05:22:55 +08:00
|
|
|
"time"
|
2025-02-03 16:06:18 +08:00
|
|
|
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
|
|
data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1"
|
2025-05-29 23:07:40 +08:00
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
2025-02-03 16:06:18 +08:00
|
|
|
)
|
|
|
|
|
2025-07-15 14:31:57 +08:00
|
|
|
type Response struct {
|
|
|
|
QDR *backend.QueryDataResponse
|
|
|
|
Headers http.Header
|
|
|
|
}
|
|
|
|
|
2025-02-03 16:06:18 +08:00
|
|
|
type QueryDataClient interface {
|
2025-07-18 05:22:55 +08:00
|
|
|
QueryData(ctx context.Context, req data.QueryDataRequest) (*backend.QueryDataResponse, error)
|
2025-02-03 16:06:18 +08:00
|
|
|
}
|
|
|
|
|
2025-05-29 23:07:40 +08:00
|
|
|
type InstanceConfigurationSettings struct {
|
2025-07-18 05:22:55 +08:00
|
|
|
StackID uint32
|
|
|
|
FeatureToggles featuremgmt.FeatureToggles
|
|
|
|
FullConfig map[string]map[string]string // configuration file settings
|
|
|
|
Options map[string]string // additional settings related to an instance as set by grafana
|
|
|
|
SQLExpressionCellLimit int64
|
|
|
|
SQLExpressionOutputCellLimit int64
|
|
|
|
SQLExpressionTimeout time.Duration
|
|
|
|
ExpressionsEnabled bool
|
2025-05-29 23:07:40 +08:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:06:18 +08:00
|
|
|
type DataSourceClientSupplier interface {
|
|
|
|
// Get a client for a given datasource
|
2025-05-29 23:07:40 +08:00
|
|
|
GetDataSourceClient(ctx context.Context, ref data.DataSourceRef, headers map[string]string, instanceConfig InstanceConfigurationSettings) (QueryDataClient, error)
|
|
|
|
// fetch information on the grafana instance (e.g. feature toggles)
|
|
|
|
GetInstanceConfigurationSettings(ctx context.Context) (InstanceConfigurationSettings, error)
|
2025-02-03 16:06:18 +08:00
|
|
|
}
|