Orgs: Remove dependency on dashboard table for deletion (#98501)

This commit is contained in:
Stephanie Hingtgen
2025-01-06 19:05:22 +02:00
committed by GitHub
parent 14369c53ed
commit 68479d844b
17 changed files with 212 additions and 16 deletions
-5
View File
@@ -138,11 +138,6 @@ func (s *Service) UpdateAddress(ctx context.Context, cmd *org.UpdateOrgAddressCo
return s.store.UpdateAddress(ctx, cmd)
}
// TODO: refactor service to call store CRUD method
func (s *Service) Delete(ctx context.Context, cmd *org.DeleteOrgCommand) error {
return s.store.Delete(ctx, cmd)
}
func (s *Service) GetOrCreate(ctx context.Context, orgName string) (int64, error) {
var orga = &org.Org{}
var err error
@@ -0,0 +1,43 @@
package orgimpl
import (
"context"
"github.com/grafana/grafana/pkg/infra/db"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/dashboards"
"github.com/grafana/grafana/pkg/services/org"
"github.com/grafana/grafana/pkg/setting"
)
type DeletionService struct {
store store
cfg *setting.Cfg
log log.Logger
dashSvc dashboards.DashboardService
}
func ProvideDeletionService(db db.DB, cfg *setting.Cfg, dashboardService dashboards.DashboardService) (org.DeletionService, error) {
log := log.New("org deletion service")
s := &DeletionService{
store: &sqlStore{
db: db,
dialect: db.GetDialect(),
log: log,
},
cfg: cfg,
dashSvc: dashboardService,
log: log,
}
return s, nil
}
func (s *DeletionService) Delete(ctx context.Context, cmd *org.DeleteOrgCommand) error {
err := s.dashSvc.DeleteAllDashboards(ctx, cmd.ID)
if err != nil {
return err
}
return s.store.Delete(ctx, cmd)
}
+2 -3
View File
@@ -220,9 +220,8 @@ func (ss *sqlStore) Delete(ctx context.Context, cmd *org.DeleteOrgCommand) error
}
deletes := []string{
"DELETE FROM star WHERE EXISTS (SELECT 1 FROM dashboard WHERE org_id = ? AND star.dashboard_uid = dashboard.uid)",
"DELETE FROM dashboard_tag WHERE EXISTS (SELECT 1 FROM dashboard WHERE org_id = ? AND dashboard_tag.dashboard_id = dashboard.id)",
"DELETE FROM dashboard WHERE org_id = ?",
"DELETE FROM star WHERE org_id = ?",
"DELETE FROM dashboard_tag WHERE org_id = ?",
"DELETE FROM api_key WHERE org_id = ?",
"DELETE FROM data_source WHERE org_id = ?",
"DELETE FROM org_user WHERE org_id = ?",