Documentation ¶
Index ¶
- Constants
- Variables
- func CreateMockData(table string, folder string, csvData string) error
- func CreateMockTable(table string, folder string) error
- func DownstreamError(err error, override ...bool) error
- func ErrorSource(err error) backend.ErrorSource
- func Interpolate(driver Driver, query *Query) (string, error)
- func PluginError(err error, override ...bool) error
- type CheckHealthMutator
- type Completable
- type Connection
- type Connector
- func (c *Connector) Connect(ctx context.Context, headers http.Header) (*dbConnection, error)
- func (c *Connector) Dispose()
- func (c *Connector) GetConnectionFromQuery(ctx context.Context, q *Query) (string, dbConnection, error)
- func (c *Connector) Reconnect(ctx context.Context, dbConn dbConnection, q *Query, cacheKey string) (*sql.DB, error)
- type DBQuery
- type Driver
- type DriverSettings
- type Endpoint
- type FormatQueryOption
- type HealthChecker
- type MacroFunc
- type Macros
- type Metrics
- type Options
- type Querydeprecated
- type QueryArgSetter
- type QueryDataMutator
- type QueryMutator
- type Response
- type ResponseMutator
- type SQLDatasource
- func (ds *SQLDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error)
- func (ds *SQLDatasource) Dispose()
- func (ds *SQLDatasource) DriverSettings() DriverSettings
- func (ds *SQLDatasource) GetDBFromQuery(ctx context.Context, q *Query) (*sql.DB, error)
- func (ds *SQLDatasource) NewDatasource(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error)
- func (ds *SQLDatasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error)
- type SQLMock
- func (h *SQLMock) Connect(_ context.Context, _ backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error)
- func (h *SQLMock) Converters() []sqlutil.Converter
- func (h *SQLMock) Macros() Macros
- func (h *SQLMock) Settings(_ context.Context, _ backend.DataSourceInstanceSettings) DriverSettings
- type Source
- type Status
Constants ¶
const ( StatusOK Status = "ok" StatusError Status = "error" EndpointHealth Endpoint = "health" EndpointQuery Endpoint = "query" SourceDownstream Source = "downstream" SourcePlugin Source = "plugin" )
const ( // FormatOptionTimeSeries formats the query results as a timeseries using "LongToWide" FormatOptionTimeSeries = sqlutil.FormatOptionTimeSeries // FormatOptionTable formats the query results as a table using "LongToWide" FormatOptionTable = sqlutil.FormatOptionTable // FormatOptionLogs sets the preferred visualization to logs FormatOptionLogs = sqlutil.FormatOptionLogs // FormatOptionsTrace sets the preferred visualization to trace FormatOptionTrace = sqlutil.FormatOptionTrace // FormatOptionMulti formats the query results as a timeseries using "LongToMulti" FormatOptionMulti = sqlutil.FormatOptionMulti )
Deprecated: use the values in sqlutil directly instead
const MockDataFolder = "/mock-data"
MockDataFolder is the default folder that will contain data files
Variables ¶
var ( // ErrorNotImplemented is returned if the function is not implemented by the provided Driver (the Completable pointer is nil) ErrorNotImplemented = errors.New("not implemented") // ErrorWrongOptions when trying to parse Options with a invalid JSON ErrorWrongOptions = errors.New("error reading query options") )
var ( ErrorMissingMultipleConnectionsConfig = PluginError(errors.New("received connection arguments but the feature is not enabled")) ErrorMissingDBConnection = PluginError(errors.New("unable to get default db connection")) HeaderKey = "grafana-http-headers" // Deprecated: ErrorMissingMultipleConnectionsConfig should be used instead MissingMultipleConnectionsConfig = ErrorMissingMultipleConnectionsConfig // Deprecated: ErrorMissingDBConnection should be used instead MissingDBConnection = ErrorMissingDBConnection )
var ( // ErrorBadDatasource is returned if the data source could not be asserted to the correct type (this should basically never happen?) ErrorBadDatasource = errors.New("type assertion to datasource failed") // ErrorJSON is returned when json.Unmarshal fails ErrorJSON = errors.New("error unmarshaling query JSON the Query Model") // ErrorQuery is returned when the query could not complete / execute ErrorQuery = errors.New("error querying the database") // ErrorTimeout is returned if the query has timed out ErrorTimeout = errors.New("query timeout exceeded") // ErrorNoResults is returned if there were no results returned ErrorNoResults = errors.New("no results returned from query") )
var DefaultMacros = sqlutil.DefaultMacros
Deprecated: use sqlutil.DefaultMacros directly
var (
ErrorParsingMacroBrackets = errors.New("failed to parse macro arguments (missing close bracket?)")
)
Functions ¶
func CreateMockData ¶
CreateData will create a "table" (csv file) in the data folder that can be queried with SQL
func CreateMockTable ¶
Create will create a "table" (csv file) in the data folder that can be queried with SQL
func DownstreamError ¶
func ErrorSource ¶
func ErrorSource(err error) backend.ErrorSource
func Interpolate ¶
Interpolate wraps sqlutil.Interpolate for temporary backwards-compatibility Deprecated: use sqlutil.Interpolate directly
func PluginError ¶
Types ¶
type CheckHealthMutator ¶ added in v4.1.0
type CheckHealthMutator interface {
MutateCheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (context.Context, *backend.CheckHealthRequest)
}
CheckHealthMutator is an additional interface that could be implemented by driver. This adds ability to the driver to optionally mutate the CheckHealth before it's run
type Completable ¶
type Completable interface { Schemas(ctx context.Context, options Options) ([]string, error) Tables(ctx context.Context, options Options) ([]string, error) Columns(ctx context.Context, options Options) ([]string, error) }
Completable will be used to autocomplete Tables Schemas and Columns for SQL languages
type Connection ¶
type Connection interface { Close() error Ping() error PingContext(ctx context.Context) error QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) }
Connection represents a SQL connection and is satisfied by the *sql.DB type For now, we only add the functions that we need / actively use. Some other candidates for future use could include the ExecContext and BeginTxContext functions
type Connector ¶
type Connector struct { UID string // contains filtered or unexported fields }
func NewConnector ¶
func (*Connector) Dispose ¶ added in v4.1.3
func (c *Connector) Dispose()
Dispose is called when an existing SQLDatasource needs to be replaced
func (*Connector) GetConnectionFromQuery ¶
type DBQuery ¶
type DBQuery struct { DB Connection Settings backend.DataSourceInstanceSettings DSName string // contains filtered or unexported fields }
func NewQuery ¶
func NewQuery(db Connection, settings backend.DataSourceInstanceSettings, converters []sqlutil.Converter, fillMode *data.FillMissing) *DBQuery
type Driver ¶
type Driver interface { // Connect connects to the database. It does not need to call `db.Ping()` Connect(context.Context, backend.DataSourceInstanceSettings, json.RawMessage) (*sql.DB, error) // Settings are read whenever the plugin is initialized, or after the data source settings are updated Settings(context.Context, backend.DataSourceInstanceSettings) DriverSettings Macros() Macros Converters() []sqlutil.Converter }
Driver is a simple interface that defines how to connect to a backend SQL datasource Plugin creators will need to implement this in order to create a managed datasource
type DriverSettings ¶
type FormatQueryOption ¶
type FormatQueryOption = sqlutil.FormatQueryOption
FormatQueryOption defines how the user has chosen to represent the data Deprecated: use sqlutil.FormatQueryOption directly instead
type HealthChecker ¶
func (*HealthChecker) Check ¶
func (hc *HealthChecker) Check(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error)
type MacroFunc ¶
MacroFunc defines a signature for applying a query macro Query macro implementations are defined by users / consumers of this package Deprecated: use sqlutil.MacroFunc directly
type Macros ¶
Macros is a list of MacroFuncs. The "string" key is the name of the macro function. This name has to be regex friendly. Deprecated: use sqlutil.Macros directly
type Options ¶
Options are used to query schemas, tables and columns. They will be encoded in the request body (e.g. {"database": "mydb"})
func ParseOptions ¶
func ParseOptions(rawOptions json.RawMessage) (Options, error)
type QueryArgSetter ¶
type QueryArgSetter interface {
SetQueryArgs(ctx context.Context, headers http.Header) []interface{}
}
QueryArgSetter is an additional interface that could be implemented by driver. This adds the ability to the driver to optionally set query args that are then sent down to the database.
type QueryDataMutator ¶ added in v4.1.0
type QueryDataMutator interface {
MutateQueryData(ctx context.Context, req *backend.QueryDataRequest) (context.Context, *backend.QueryDataRequest)
}
QueryDataMutator is an additional interface that could be implemented by driver. This adds ability to the driver to optionally mutate the query before it's run with the QueryDataRequest.
type QueryMutator ¶
type QueryMutator interface {
MutateQuery(ctx context.Context, req backend.DataQuery) (context.Context, backend.DataQuery)
}
QueryMutator is an additional interface that could be implemented by driver. This adds ability to the driver it can mutate query before run.
type Response ¶
type Response struct {
// contains filtered or unexported fields
}
func NewResponse ¶
func NewResponse(res *backend.QueryDataResponse) *Response
func (*Response) Response ¶
func (r *Response) Response() *backend.QueryDataResponse
type ResponseMutator ¶
type ResponseMutator interface {
MutateResponse(ctx context.Context, res data.Frames) (data.Frames, error)
}
ResponseMutator is an additional interface that could be implemented by driver. This adds ability to the driver, so it can mutate a response from the driver before its returned to the client.
type SQLDatasource ¶
type SQLDatasource struct { Completable backend.CallResourceHandler CustomRoutes map[string]func(http.ResponseWriter, *http.Request) EnableMultipleConnections bool // contains filtered or unexported fields }
func NewDatasource ¶
func NewDatasource(c Driver) *SQLDatasource
NewDatasource initializes the Datasource wrapper and instance manager
func (*SQLDatasource) CheckHealth ¶
func (ds *SQLDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error)
CheckHealth pings the connected SQL database
func (*SQLDatasource) Dispose ¶
func (ds *SQLDatasource) Dispose()
Dispose cleans up datasource instance resources. Note: Called when testing and saving a datasource
func (*SQLDatasource) DriverSettings ¶
func (ds *SQLDatasource) DriverSettings() DriverSettings
func (*SQLDatasource) GetDBFromQuery ¶
func (*SQLDatasource) NewDatasource ¶
func (ds *SQLDatasource) NewDatasource(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error)
NewDatasource creates a new `SQLDatasource`. It uses the provided settings argument to call the ds.Driver to connect to the SQL server
func (*SQLDatasource) QueryData ¶
func (ds *SQLDatasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error)
QueryData creates the Responses list and executes each query
type SQLMock ¶
type SQLMock struct {
// contains filtered or unexported fields
}
SQLMock connects to a local folder with csv files
func (*SQLMock) Connect ¶
func (h *SQLMock) Connect(_ context.Context, _ backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error)
Connect opens a sql.DB connection using datasource settings
func (*SQLMock) Converters ¶
Converters defines list of string convertors
func (*SQLMock) Settings ¶
func (h *SQLMock) Settings(_ context.Context, _ backend.DataSourceInstanceSettings) DriverSettings