From 4ce0bf4d16b9526bbca34b918929bc4d7a136d77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 11 May 2017 10:50:24 +0200 Subject: [PATCH] mysql: improved mysql data source, added test feature when adding data source, fixed cache issue --- pkg/api/datasources.go | 4 ++- pkg/models/datasource.go | 5 ++-- pkg/services/sqlstore/datasource.go | 1 + .../plugins/datasource/mysql/datasource.ts | 28 +++++++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/pkg/api/datasources.go b/pkg/api/datasources.go index 1d99dac3d40..9ffdc4a6d1b 100644 --- a/pkg/api/datasources.go +++ b/pkg/api/datasources.go @@ -149,8 +149,8 @@ func fillWithSecureJsonData(cmd *m.UpdateDataSourceCommand) error { if err != nil { return err } - secureJsonData := ds.SecureJsonData.Decrypt() + secureJsonData := ds.SecureJsonData.Decrypt() for k, v := range secureJsonData { if _, ok := cmd.SecureJsonData[k]; !ok { @@ -158,6 +158,8 @@ func fillWithSecureJsonData(cmd *m.UpdateDataSourceCommand) error { } } + // set version from db + cmd.Version = ds.Version return nil } diff --git a/pkg/models/datasource.go b/pkg/models/datasource.go index 804880a5d10..3fdfd9c47da 100644 --- a/pkg/models/datasource.go +++ b/pkg/models/datasource.go @@ -116,8 +116,9 @@ type UpdateDataSourceCommand struct { JsonData *simplejson.Json `json:"jsonData"` SecureJsonData map[string]string `json:"secureJsonData"` - OrgId int64 `json:"-"` - Id int64 `json:"-"` + OrgId int64 `json:"-"` + Id int64 `json:"-"` + Version int `json:"-"` } type DeleteDataSourceByIdCommand struct { diff --git a/pkg/services/sqlstore/datasource.go b/pkg/services/sqlstore/datasource.go index de838163681..625b53469e9 100644 --- a/pkg/services/sqlstore/datasource.go +++ b/pkg/services/sqlstore/datasource.go @@ -141,6 +141,7 @@ func UpdateDataSource(cmd *m.UpdateDataSourceCommand) error { JsonData: cmd.JsonData, SecureJsonData: securejsondata.GetEncryptedJsonData(cmd.SecureJsonData), Updated: time.Now(), + Version: cmd.Version + 1, } sess.UseBool("is_default") diff --git a/public/app/plugins/datasource/mysql/datasource.ts b/public/app/plugins/datasource/mysql/datasource.ts index f798ce0e838..2f2eaec395d 100644 --- a/public/app/plugins/datasource/mysql/datasource.ts +++ b/public/app/plugins/datasource/mysql/datasource.ts @@ -52,6 +52,34 @@ export class MysqlDatasource { }).then(this.processQueryResult.bind(this)); } + testDatasource() { + return this.backendSrv.datasourceRequest({ + url: '/api/tsdb/query', + method: 'POST', + data: { + from: '5m', + to: 'now', + queries: [{ + refId: 'A', + intervalMs: 1, + maxDataPoints: 1, + datasourceId: this.id, + rawSql: "SELECT 1", + format: 'table', + }], + } + }).then(res => { + return { status: "success", message: "Database Connection OK", title: "Success" }; + }).catch(err => { + console.log(err); + if (err.data && err.data.message) { + return { status: "error", message: err.data.message, title: "Error" }; + } else { + return { status: "error", message: err.status, title: "Error" }; + } + }); + } + processQueryResult(res) { var data = [];