Documentation
¶
Index ¶
- Constants
- Variables
- func CreateMockData(table string, folder string, csvData string) error
- func CreateMockTable(table string, folder string) error
- func Interpolate(driver Driver, query *Query) (string, error)
- func QueryDB(ctx context.Context, db Connection, converters []sqlutil.Converter, ...) (data.Frames, error)
- type Completable
- type Connection
- type Driver
- type DriverSettings
- type FormatQueryOption
- type MacroFunc
- type Macros
- type Options
- type Query
- type QueryMutator
- type Response
- 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(q *Query, datasourceUID string) (*sql.DB, error)
- func (ds *SQLDatasource) NewDatasource(settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error)
- func (ds *SQLDatasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error)
- type SQLMock
Constants ¶
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 = errors.New("received connection arguments but the feature is not enabled") ErrorMissingDBConnection = errors.New("unable to get default db connection") // 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 ( // ErrorBadArgumentCount is returned from macros when the wrong number of arguments were provided ErrorBadArgumentCount = errors.New("unexpected number of arguments") )
Functions ¶
func CreateMockData ¶ added in v2.3.11
CreateData will create a "table" (csv file) in the data folder that can be queried with SQL
func CreateMockTable ¶ added in v2.3.11
Create will create a "table" (csv file) in the data folder that can be queried with SQL
func Interpolate ¶ added in v2.3.4
Interpolate returns an interpolated query string given a backend.DataQuery
Types ¶
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 ¶ added in v2.0.2
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 Driver ¶
type Driver interface { // Connect connects to the database. It does not need to call `db.Ping()` Connect(backend.DataSourceInstanceSettings, json.RawMessage) (*sql.DB, error) // Settings are read whenever the plugin is initialized, or after the data source settings are updated Settings(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 uint32
FormatQueryOption defines how the user has chosen to represent the data
const ( // FormatOptionTimeSeries formats the query results as a timeseries using "WideToLong" FormatOptionTimeSeries FormatQueryOption = iota // FormatOptionTable formats the query results as a table using "LongToWide" FormatOptionTable // FormatOptionLogs sets the preferred visualization to logs FormatOptionLogs // FormatOptionsTrace sets the preferred visualization to trace FormatOptionTrace )
type MacroFunc ¶
MacroFunc defines a signature for applying a query macro Query macro implementations are defined by users / consumers of this package
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.
type Options ¶ added in v2.3.0
Options are used to query schemas, tables and columns. They will be encoded in the request body (e.g. {"database": "mydb"})
func ParseOptions ¶ added in v2.3.2
func ParseOptions(rawOptions json.RawMessage) (Options, error)
type Query ¶
type Query struct { RawSQL string `json:"rawSql"` Format FormatQueryOption `json:"format"` ConnectionArgs json.RawMessage `json:"connectionArgs"` RefID string `json:"-"` Interval time.Duration `json:"-"` TimeRange backend.TimeRange `json:"-"` MaxDataPoints int64 `json:"-"` FillMissing *data.FillMissing `json:"fillMode,omitempty"` // Macros Schema string `json:"schema,omitempty"` Table string `json:"table,omitempty"` Column string `json:"column,omitempty"` }
Query is the model that represents the query that users submit from the panel / queryeditor. For the sake of backwards compatibility, when making changes to this type, ensure that changes are only additive.
type QueryMutator ¶ added in v2.4.0
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 SQLDatasource ¶ added in v2.3.9
type SQLDatasource struct { Completable backend.CallResourceHandler CustomRoutes map[string]func(http.ResponseWriter, *http.Request) // Enabling multiple connections may cause that concurrent connection limits // are hit. The datasource enabling this should make sure connections are cached // if necessary. 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 ¶ added in v2.3.9
func (ds *SQLDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error)
CheckHealth pings the connected SQL database
func (*SQLDatasource) Dispose ¶ added in v2.3.9
func (ds *SQLDatasource) Dispose()
Dispose cleans up datasource instance resources. Note: Called when testing and saving a datasource
func (*SQLDatasource) DriverSettings ¶ added in v2.3.9
func (ds *SQLDatasource) DriverSettings() DriverSettings
func (*SQLDatasource) GetDBFromQuery ¶ added in v2.3.10
func (*SQLDatasource) NewDatasource ¶ added in v2.3.9
func (ds *SQLDatasource) NewDatasource(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 ¶ added in v2.3.9
func (ds *SQLDatasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error)
QueryData creates the Responses list and executes each query
type SQLMock ¶ added in v2.3.11
type SQLMock struct {
// contains filtered or unexported fields
}
SQLMock connects to a local folder with csv files
func (*SQLMock) Connect ¶ added in v2.3.11
func (h *SQLMock) Connect(config backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error)
Connect opens a sql.DB connection using datasource settings
func (*SQLMock) Converters ¶ added in v2.3.11
Converters defines list of string convertors
func (*SQLMock) Macros ¶ added in v2.3.11
Macros returns list of macro functions convert the macros of raw query
func (*SQLMock) Settings ¶ added in v2.3.11
func (h *SQLMock) Settings(config backend.DataSourceInstanceSettings) DriverSettings