grafana/pkg/services/publicdashboards/service/service_wapper.go
owensmallwood 1a5a280c86
Pubdash: Email sharing handle dashboard deleted (#64247)
dashboard service calls pubdash service when dashboard deleted
2023-03-08 14:54:35 -06:00

55 lines
1.9 KiB
Go

package service
import (
"context"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/publicdashboards"
. "github.com/grafana/grafana/pkg/services/publicdashboards/models"
)
// PublicDashboardServiceWrapperImpl Define the Service Implementation. We're generating mock implementation
// automatically
type PublicDashboardServiceWrapperImpl struct {
log log.Logger
store publicdashboards.Store
}
// Gives us compile time error if the service does not adhere to the contract of
// the interface
var _ publicdashboards.ServiceWrapper = (*PublicDashboardServiceWrapperImpl)(nil)
// ProvideServiceWrapper Factory for method used by wire to inject dependencies.
// builds the service, and api, and configures routes
func ProvideServiceWrapper(
store publicdashboards.Store,
) *PublicDashboardServiceWrapperImpl {
return &PublicDashboardServiceWrapperImpl{
log: log.New(LogPrefix),
store: store,
}
}
// FindByDashboardUid is a helper method to retrieve the public dashboard configuration for a given dashboard from the database
func (pd *PublicDashboardServiceWrapperImpl) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error) {
pubdash, err := pd.store.FindByDashboardUid(ctx, orgId, dashboardUid)
if err != nil {
return nil, ErrInternalServerError.Errorf("FindByDashboardUid: failed to find a public dashboard by orgId: %d and dashboardUid: %s: %w", orgId, dashboardUid, err)
}
if pubdash == nil {
return nil, ErrPublicDashboardNotFound.Errorf("FindByDashboardUid: Public dashboard not found by orgId: %d and dashboardUid: %s", orgId, dashboardUid)
}
return pubdash, nil
}
func (pd *PublicDashboardServiceWrapperImpl) Delete(ctx context.Context, uid string) error {
_, err := pd.store.Delete(ctx, uid)
if err != nil {
return ErrInternalServerError.Errorf("Delete: failed to delete a public dashboard by Uid: %s %w", uid, err)
}
return nil
}