From 58449d42ed56d56c5a418a9920576365a0fa5498 Mon Sep 17 00:00:00 2001 From: Kat Yang <69819079+yangkb09@users.noreply.github.com> Date: Wed, 31 Aug 2022 16:45:41 -0400 Subject: [PATCH] Chore: Add dashboard thumbnails service (#54500) * Chore: Add dashboard thumbnails service * Fix errors in dashboard thumbs impl * Inject dashboardThumbsService into wire --- pkg/api/http_server.go | 15 +++-- pkg/server/wire.go | 2 + .../dashboard_thumbs/dashboard_thumbs.go | 15 +++++ .../dashboardthumbsimpl/dashboard_thumbs.go | 62 +++++++++++++++++++ .../dashboardthumbsimpl/store.go | 1 + .../dashboardthumbsimpl/store_test.go | 1 + 6 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 pkg/services/dashboard_thumbs/dashboard_thumbs.go create mode 100644 pkg/services/dashboard_thumbs/dashboardthumbsimpl/dashboard_thumbs.go create mode 100644 pkg/services/dashboard_thumbs/dashboardthumbsimpl/store.go create mode 100644 pkg/services/dashboard_thumbs/dashboardthumbsimpl/store_test.go diff --git a/pkg/api/http_server.go b/pkg/api/http_server.go index 82e8013fe6d..2d34ebb1c98 100644 --- a/pkg/api/http_server.go +++ b/pkg/api/http_server.go @@ -42,6 +42,7 @@ import ( "github.com/grafana/grafana/pkg/services/comments" "github.com/grafana/grafana/pkg/services/contexthandler" "github.com/grafana/grafana/pkg/services/correlations" + dashboardThumbs "github.com/grafana/grafana/pkg/services/dashboard_thumbs" "github.com/grafana/grafana/pkg/services/dashboards" "github.com/grafana/grafana/pkg/services/dashboardsnapshots" dashver "github.com/grafana/grafana/pkg/services/dashboardversion" @@ -182,11 +183,12 @@ type HTTPServer struct { apiKeyService apikey.Service kvStore kvstore.KVStore - userService user.Service - tempUserService tempUser.Service - loginAttemptService loginAttempt.Service - orgService org.Service - accesscontrolService accesscontrol.Service + userService user.Service + tempUserService tempUser.Service + dashboardThumbsService dashboardThumbs.Service + loginAttemptService loginAttempt.Service + orgService org.Service + accesscontrolService accesscontrol.Service } type ServerOptions struct { @@ -225,7 +227,7 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi secretsMigrator secrets.Migrator, secretsPluginManager plugins.SecretsPluginManager, secretsService secrets.Service, secretsPluginMigrator *spm.SecretMigrationServiceImpl, secretsStore secretsKV.SecretsKVStore, publicDashboardsApi *publicdashboardsApi.Api, userService user.Service, tempUserService tempUser.Service, loginAttemptService loginAttempt.Service, orgService org.Service, - accesscontrolService accesscontrol.Service, + accesscontrolService accesscontrol.Service, dashboardThumbsService dashboardThumbs.Service, ) (*HTTPServer, error) { web.Env = cfg.Env m := web.New() @@ -317,6 +319,7 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi PublicDashboardsApi: publicDashboardsApi, userService: userService, tempUserService: tempUserService, + dashboardThumbsService: dashboardThumbsService, loginAttemptService: loginAttemptService, orgService: orgService, accesscontrolService: accesscontrolService, diff --git a/pkg/server/wire.go b/pkg/server/wire.go index aff0949c27a..91d6f856469 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -53,6 +53,7 @@ import ( "github.com/grafana/grafana/pkg/services/contexthandler" "github.com/grafana/grafana/pkg/services/contexthandler/authproxy" "github.com/grafana/grafana/pkg/services/correlations" + "github.com/grafana/grafana/pkg/services/dashboard_thumbs/dashboardthumbsimpl" "github.com/grafana/grafana/pkg/services/dashboardimport" dashboardimportservice "github.com/grafana/grafana/pkg/services/dashboardimport/service" "github.com/grafana/grafana/pkg/services/dashboards" @@ -326,6 +327,7 @@ var wireBasicSet = wire.NewSet( userimpl.ProvideService, orgimpl.ProvideService, tempuserimpl.ProvideService, + dashboardthumbsimpl.ProvideService, loginattemptimpl.ProvideService, secretsMigrations.ProvideDataSourceMigrationService, secretsMigrations.ProvideMigrateToPluginService, diff --git a/pkg/services/dashboard_thumbs/dashboard_thumbs.go b/pkg/services/dashboard_thumbs/dashboard_thumbs.go new file mode 100644 index 00000000000..b6c3c525ce3 --- /dev/null +++ b/pkg/services/dashboard_thumbs/dashboard_thumbs.go @@ -0,0 +1,15 @@ +package dashboardthumbs + +import ( + "context" + + "github.com/grafana/grafana/pkg/models" +) + +type Service interface { + GetThumbnail(ctx context.Context, query *models.GetDashboardThumbnailCommand) (*models.DashboardThumbnail, error) + SaveThumbnail(ctx context.Context, cmd *models.SaveDashboardThumbnailCommand) (*models.DashboardThumbnail, error) + UpdateThumbnailState(ctx context.Context, cmd *models.UpdateThumbnailStateCommand) error + FindThumbnailCount(ctx context.Context, cmd *models.FindDashboardThumbnailCountCommand) (int64, error) + FindDashboardsWithStaleThumbnails(ctx context.Context, cmd *models.FindDashboardsWithStaleThumbnailsCommand) ([]*models.DashboardWithStaleThumbnail, error) +} diff --git a/pkg/services/dashboard_thumbs/dashboardthumbsimpl/dashboard_thumbs.go b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/dashboard_thumbs.go new file mode 100644 index 00000000000..b4dd71e8f1f --- /dev/null +++ b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/dashboard_thumbs.go @@ -0,0 +1,62 @@ +package dashboardthumbsimpl + +import ( + "context" + + "github.com/grafana/grafana/pkg/models" + dashboardthumbs "github.com/grafana/grafana/pkg/services/dashboard_thumbs" + "github.com/grafana/grafana/pkg/services/sqlstore" +) + +type Service struct { + // TODO remove sqlstore + sqlStore *sqlstore.SQLStore +} + +func ProvideService( + ss *sqlstore.SQLStore, +) dashboardthumbs.Service { + return &Service{ + sqlStore: ss, + } +} + +func (s *Service) GetThumbnail(ctx context.Context, query *models.GetDashboardThumbnailCommand) (*models.DashboardThumbnail, error) { + dt, err := s.sqlStore.GetThumbnail(ctx, query) + if err != nil { + return dt, err + } + return dt, nil +} + +func (s *Service) SaveThumbnail(ctx context.Context, cmd *models.SaveDashboardThumbnailCommand) (*models.DashboardThumbnail, error) { + dt, err := s.sqlStore.SaveThumbnail(ctx, cmd) + if err != nil { + return dt, err + } + return dt, nil +} + +func (s *Service) UpdateThumbnailState(ctx context.Context, cmd *models.UpdateThumbnailStateCommand) error { + err := s.sqlStore.UpdateThumbnailState(ctx, cmd) + if err != nil { + return err + } + return nil +} + +func (s *Service) FindThumbnailCount(ctx context.Context, cmd *models.FindDashboardThumbnailCountCommand) (int64, error) { + i, err := s.sqlStore.FindThumbnailCount(ctx, cmd) + if err != nil { + return i, err + } + return 0, nil +} + +func (s *Service) FindDashboardsWithStaleThumbnails(ctx context.Context, cmd *models.FindDashboardsWithStaleThumbnailsCommand) ([]*models.DashboardWithStaleThumbnail, error) { + d, err := s.sqlStore.FindDashboardsWithStaleThumbnails(ctx, cmd) + if err != nil { + return d, err + } + return nil, nil +} diff --git a/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store.go b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store.go new file mode 100644 index 00000000000..126fbc20bad --- /dev/null +++ b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store.go @@ -0,0 +1 @@ +package dashboardthumbsimpl diff --git a/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store_test.go b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store_test.go new file mode 100644 index 00000000000..126fbc20bad --- /dev/null +++ b/pkg/services/dashboard_thumbs/dashboardthumbsimpl/store_test.go @@ -0,0 +1 @@ +package dashboardthumbsimpl