Orgs: Remove dependency on dashboard table for deletion (#98501)
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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 = ?",
|
||||
|
||||
Reference in New Issue
Block a user