From ef62e4f9d87800379be83927eb01c2a6c0e67a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Thu, 3 Dec 2020 11:21:55 +0100 Subject: [PATCH] PanelLibrary: Adds panellib table --- pkg/server/server.go | 1 + pkg/services/panellib/panellib.go | 63 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 pkg/services/panellib/panellib.go diff --git a/pkg/server/server.go b/pkg/server/server.go index 7372a329a7b..38c509f38c5 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -37,6 +37,7 @@ import ( _ "github.com/grafana/grafana/pkg/services/cleanup" _ "github.com/grafana/grafana/pkg/services/ngalert" _ "github.com/grafana/grafana/pkg/services/notifications" + _ "github.com/grafana/grafana/pkg/services/panellib" _ "github.com/grafana/grafana/pkg/services/provisioning" _ "github.com/grafana/grafana/pkg/services/rendering" _ "github.com/grafana/grafana/pkg/services/search" diff --git a/pkg/services/panellib/panellib.go b/pkg/services/panellib/panellib.go new file mode 100644 index 00000000000..5a4fda56e97 --- /dev/null +++ b/pkg/services/panellib/panellib.go @@ -0,0 +1,63 @@ +package panellib + +import ( + "github.com/grafana/grafana/pkg/infra/log" + "github.com/grafana/grafana/pkg/registry" + "github.com/grafana/grafana/pkg/services/sqlstore" + "github.com/grafana/grafana/pkg/services/sqlstore/migrator" + "github.com/grafana/grafana/pkg/setting" +) + +// PanelLib is the service the Panel Libary feature. +type PanelLib struct { + Cfg *setting.Cfg `inject:""` + SQLStore *sqlstore.SQLStore `inject:""` + log log.Logger +} + +func init() { + registry.RegisterService(&PanelLib{}) +} + +// Init initializes the PanelLib Service. +func (pl *PanelLib) Init() error { + pl.log = log.New("panellib") + + return nil +} + +// IsEnabled returns true if the PanelLib service is enabled for this instance. +func (pl *PanelLib) IsEnabled() bool { + if pl.Cfg == nil { + return false + } + + return pl.Cfg.IsPanelLibraryEnabled() +} + +// AddMigration defines database migrations. +// If Panel Library is not enabled does nothing. +func (pl *PanelLib) AddMigration(mg *migrator.Migrator) { + if !pl.IsEnabled() { + return + } + + mg.AddMigration("drop old table panellib", migrator.NewDropTableMigration("panellib")) + + panellibV1 := migrator.Table{ + Name: "panellib", + Columns: []*migrator.Column{ + {Name: "id", Type: migrator.DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true}, + {Name: "org_id", Type: migrator.DB_BigInt, Nullable: false}, + {Name: "folder_id", Type: migrator.DB_BigInt, Nullable: false}, + {Name: "title", Type: migrator.DB_NVarchar, Length: 255, Nullable: false}, + {Name: "data", Type: migrator.DB_Text, Nullable: false}, + {Name: "created", Type: migrator.DB_DateTime, Nullable: false}, + {Name: "created_by", Type: migrator.DB_BigInt, Nullable: false}, + {Name: "updated", Type: migrator.DB_DateTime, Nullable: false}, + {Name: "updated_by", Type: migrator.DB_BigInt, Nullable: false}, + }, + } + + mg.AddMigration("create panellib table v1", migrator.NewAddTableMigration(panellibV1)) +}