diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 3c5a37b13fd..7831f609054 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -54,6 +54,7 @@ export interface FeatureToggles { traceToMetrics?: boolean; prometheusStreamingJSONParser?: boolean; prometheusStreamingJSONParserTest?: boolean; + newDBLibrary?: boolean; validateDashboardsOnSave?: boolean; autoMigrateGraphPanels?: boolean; prometheusWideSeries?: boolean; diff --git a/pkg/services/apikey/apikeyimpl/apikey.go b/pkg/services/apikey/apikeyimpl/apikey.go index 8954aa6b4e0..4b2af715707 100644 --- a/pkg/services/apikey/apikeyimpl/apikey.go +++ b/pkg/services/apikey/apikeyimpl/apikey.go @@ -5,6 +5,7 @@ import ( "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/services/apikey" + "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/setting" ) @@ -13,7 +14,7 @@ type Service struct { } func ProvideService(db db.DB, cfg *setting.Cfg) apikey.Service { - if cfg.IsFeatureToggleEnabled("newDBLibrary") { + if cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) { return &Service{ store: &sqlxStore{ sess: db.GetSqlxSession(), diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index a607ce9d7c0..8c94ed5981a 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -213,6 +213,11 @@ var ( Description: "Run both old and streaming requests and log differences", State: FeatureStateBeta, }, + { + Name: "newDBLibrary", + Description: "Use jmoiron/sqlx rather than xorm for a few backend services", + State: FeatureStateBeta, + }, { Name: "validateDashboardsOnSave", Description: "Validate dashboard JSON POSTed to api/dashboards/db", diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 26f5b312ab1..c885c9acec6 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -159,6 +159,10 @@ const ( // Run both old and streaming requests and log differences FlagPrometheusStreamingJSONParserTest = "prometheusStreamingJSONParserTest" + // FlagNewDBLibrary + // Use jmoiron/sqlx rather than xorm for a few backend services + FlagNewDBLibrary = "newDBLibrary" + // FlagValidateDashboardsOnSave // Validate dashboard JSON POSTed to api/dashboards/db FlagValidateDashboardsOnSave = "validateDashboardsOnSave" diff --git a/pkg/services/playlist/playlistimpl/playlist.go b/pkg/services/playlist/playlistimpl/playlist.go index 9cc192526b6..6524ed490a9 100644 --- a/pkg/services/playlist/playlistimpl/playlist.go +++ b/pkg/services/playlist/playlistimpl/playlist.go @@ -19,7 +19,7 @@ func ProvideService(db db.DB, toggles featuremgmt.FeatureToggles, objserver obje var sqlstore store // 🐢🐢🐢 pick the store - if toggles.IsEnabled("newDBLibrary") { // hymmm not a registered feature flag + if toggles.IsEnabled(featuremgmt.FlagNewDBLibrary) { // hymmm not a registered feature flag sqlstore = &sqlxStore{ sess: db.GetSqlxSession(), } diff --git a/pkg/services/preference/prefimpl/pref.go b/pkg/services/preference/prefimpl/pref.go index aed44ae5eee..35839b643a2 100644 --- a/pkg/services/preference/prefimpl/pref.go +++ b/pkg/services/preference/prefimpl/pref.go @@ -22,7 +22,7 @@ func ProvideService(db db.DB, cfg *setting.Cfg, features *featuremgmt.FeatureMan cfg: cfg, features: features, } - if cfg.IsFeatureToggleEnabled("newDBLibrary") { + if features.IsEnabled(featuremgmt.FlagNewDBLibrary) { service.store = &sqlxStore{ sess: db.GetSqlxSession(), } diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 664305acf83..7e24b9af507 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -289,11 +289,11 @@ func (ss *SQLStore) buildConnectionString() (string, error) { cnnstr += fmt.Sprintf("&tx_isolation=%s", val) } - if ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagMysqlAnsiQuotes) || ss.Cfg.IsFeatureToggleEnabled("newDBLibrary") { + if ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagMysqlAnsiQuotes) || ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) { cnnstr += "&sql_mode='ANSI_QUOTES'" } - if ss.Cfg.IsFeatureToggleEnabled("newDBLibrary") { + if ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) { cnnstr += "&parseTime=true" } diff --git a/pkg/services/star/starimpl/star.go b/pkg/services/star/starimpl/star.go index 691ea2c7f57..bc745b8511b 100644 --- a/pkg/services/star/starimpl/star.go +++ b/pkg/services/star/starimpl/star.go @@ -4,6 +4,7 @@ import ( "context" "github.com/grafana/grafana/pkg/infra/db" + "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/services/star" "github.com/grafana/grafana/pkg/setting" ) @@ -13,7 +14,7 @@ type Service struct { } func ProvideService(db db.DB, cfg *setting.Cfg) star.Service { - if cfg.IsFeatureToggleEnabled("newDBLibrary") { + if cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) { return &Service{ store: &sqlxStore{ sess: db.GetSqlxSession(), diff --git a/pkg/services/tag/tagimpl/tag.go b/pkg/services/tag/tagimpl/tag.go index 0f1ea212cd8..cbddc5eed17 100644 --- a/pkg/services/tag/tagimpl/tag.go +++ b/pkg/services/tag/tagimpl/tag.go @@ -4,6 +4,7 @@ import ( "context" "github.com/grafana/grafana/pkg/infra/db" + "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/services/tag" "github.com/grafana/grafana/pkg/setting" ) @@ -13,7 +14,7 @@ type Service struct { } func ProvideService(db db.DB, cfg *setting.Cfg) *Service { - if cfg.IsFeatureToggleEnabled("newDBLibrary") { + if cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) { return &Service{ store: &sqlxStore{ sess: db.GetSqlxSession(),