Documentation
¶
Index ¶
Constants ¶
This section is empty.
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 ( MissingMultipleConnectionsConfig = errors.New("received connection arguments but the feature is not enabled") MissingDBConnection = errors.New("unable to get default db connection") )
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 Interpolate ¶ added in v2.3.4
Interpolate returns an interpolated query string given a backend.DataQuery
func NewDatasource ¶
func NewDatasource(c Driver) *sqldatasource
NewDatasource initializes the Datasource wrapper and instance manager
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 DriverSettings struct {
Timeout time.Duration
FillMode *data.FillMissing
}
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 )
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 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