Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
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") )
var ErrorNotImplemented = errors.New("not implemented")
ErrorNotImplemented is returned if the function is not implemented by the provided Driver (the Completable pointer is nil)
Functions ¶
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) ([]string, error) Tables(ctx context.Context, schema string) ([]string, error) Columns(ctx context.Context, table string) ([]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 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