From 7b5f7ed5538b711defbd42f80722904fb87e6668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 6 Jun 2017 15:40:10 +0200 Subject: [PATCH] dashboard_history: SQL did not work when using MySQL, fixes to dashboard version numbering, so inserts start at 1, added migration to fix old dashboards with version 0 --- pkg/api/dashboard.go | 3 +++ pkg/services/sqlstore/dashboard.go | 1 + pkg/services/sqlstore/dashboard_version.go | 8 ++++---- pkg/services/sqlstore/migrations/dashboard_version_mig.go | 7 +++++++ public/app/core/nav_model_srv.ts | 2 +- public/app/features/dashboard/history/history.html | 2 +- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 736461cabae..8556dcf2994 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -64,6 +64,9 @@ func GetDashboard(c *middleware.Context) { creator = getUserLogin(dash.CreatedBy) } + // make sure db version is in sync with json model version + dash.Data.Set("version", dash.Version) + dto := dtos.DashboardFullWithMeta{ Dashboard: dash.Data, Meta: dtos.DashboardMeta{ diff --git a/pkg/services/sqlstore/dashboard.go b/pkg/services/sqlstore/dashboard.go index 33b67cefd43..50b02bf0970 100644 --- a/pkg/services/sqlstore/dashboard.go +++ b/pkg/services/sqlstore/dashboard.go @@ -74,6 +74,7 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error { affectedRows := int64(0) if dash.Id == 0 { + dash.Version = 1 metrics.M_Models_Dashboard_Insert.Inc(1) dash.Data.Set("version", dash.Version) affectedRows, err = sess.Insert(dash) diff --git a/pkg/services/sqlstore/dashboard_version.go b/pkg/services/sqlstore/dashboard_version.go index 4079cd9ddf7..3ff93b59bbf 100644 --- a/pkg/services/sqlstore/dashboard_version.go +++ b/pkg/services/sqlstore/dashboard_version.go @@ -33,10 +33,10 @@ func GetDashboardVersions(query *m.GetDashboardVersionsQuery) error { dashboard_version.created, dashboard_version.created_by as created_by_id, dashboard_version.message, - dashboard_version.data, - "user".login as created_by`). - Join("LEFT", "user", `dashboard_version.created_by = "user".id`). - Join("LEFT", "dashboard", `dashboard.id = "dashboard_version".dashboard_id`). + dashboard_version.data,`+ + dialect.Quote("user")+`.login as created_by`). + Join("LEFT", "user", `dashboard_version.created_by = `+dialect.Quote("user")+`.id`). + Join("LEFT", "dashboard", `dashboard.id = dashboard_version.dashboard_id`). Where("dashboard_version.dashboard_id=? AND dashboard.org_id=?", query.DashboardId, query.OrgId). OrderBy("dashboard_version.version DESC"). Limit(query.Limit, query.Start). diff --git a/pkg/services/sqlstore/migrations/dashboard_version_mig.go b/pkg/services/sqlstore/migrations/dashboard_version_mig.go index 01bced00dea..fee69b9ef4c 100644 --- a/pkg/services/sqlstore/migrations/dashboard_version_mig.go +++ b/pkg/services/sqlstore/migrations/dashboard_version_mig.go @@ -26,6 +26,13 @@ func addDashboardVersionMigration(mg *Migrator) { mg.AddMigration("add index dashboard_version.dashboard_id", NewAddIndexMigration(dashboardVersionV1, dashboardVersionV1.Indices[0])) mg.AddMigration("add unique index dashboard_version.dashboard_id and dashboard_version.version", NewAddIndexMigration(dashboardVersionV1, dashboardVersionV1.Indices[1])) + // before new dashboards where created with version 0, now they are always inserted with version 1 + const setVersionTo1WhereZeroSQL = `UPDATE dashboard SET version = 1 WHERE version = 0` + mg.AddMigration("Set dashboard version to 1 where 0", new(RawSqlMigration). + Sqlite(setVersionTo1WhereZeroSQL). + Postgres(setVersionTo1WhereZeroSQL). + Mysql(setVersionTo1WhereZeroSQL)) + const rawSQL = `INSERT INTO dashboard_version ( dashboard_id, diff --git a/public/app/core/nav_model_srv.ts b/public/app/core/nav_model_srv.ts index 99f09916753..a12b57752d1 100644 --- a/public/app/core/nav_model_srv.ts +++ b/public/app/core/nav_model_srv.ts @@ -168,7 +168,7 @@ export class NavModelSrv { }); menu.push({ - title: 'Version History', + title: 'Version history', icon: 'fa fa-fw fa-history', clickHandler: () => dashNavCtrl.openEditView('history') }); diff --git a/public/app/features/dashboard/history/history.html b/public/app/features/dashboard/history/history.html index 431c37705c8..415bb3b794f 100644 --- a/public/app/features/dashboard/history/history.html +++ b/public/app/features/dashboard/history/history.html @@ -1,6 +1,6 @@

- Version History + Version history