sqlds
stands for SQL Datasource
.
Most SQL-driven datasources, like Postgres
, MySQL
, and MSSQL
share extremely similar codebases.
The sqlds
package is intended to remove the repetition of these datasources and centralize the datasource logic. The only thing that the datasources themselves should have to define is connecting to the database, and what driver to use, and the plugin frontend.
Usage
if err := datasource.Manage("my-datasource", datasourceFactory, datasource.ManageOpts{}); err != nil {
log.DefaultLogger.Error(err.Error())
os.Exit(1)
}
func datasourceFactory(ctx context.Context, s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
ds := sqlds.NewDatasource(&myDatasource{})
return ds.NewDatasource(ctx, s)
}
The sqlds
package formerly defined a set of default macros, but those have been migrated to grafana-plugin-sdk-go
: see the code for details.