Files
2024-11-15 09:51:31 -06:00

59 lines
1.5 KiB
Go

package starimpl
import (
"context"
"github.com/grafana/grafana/pkg/infra/db"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/sqlstore/migrations"
"github.com/grafana/grafana/pkg/services/star"
)
type Service struct {
store store
logger log.Logger
}
func ProvideService(db db.DB) star.Service {
starLogger := log.New("stars")
// fill out dashboard_uid, org_id and updated columns for stars
// need to run this at startup in case any downgrade happened after
// the initial migration
err := migrations.RunStarMigrations(db.GetEngine().NewSession(), db.GetDialect().DriverName())
if err != nil {
starLogger.Error("Failed to run star migrations", "err", err)
}
return &Service{
store: &sqlStore{
db: db,
},
logger: starLogger,
}
}
func (s *Service) Add(ctx context.Context, cmd *star.StarDashboardCommand) error {
if err := cmd.Validate(); err != nil {
return err
}
return s.store.Insert(ctx, cmd)
}
func (s *Service) Delete(ctx context.Context, cmd *star.UnstarDashboardCommand) error {
if err := cmd.Validate(); err != nil {
return err
}
return s.store.Delete(ctx, cmd)
}
func (s *Service) IsStarredByUser(ctx context.Context, query *star.IsStarredByUserQuery) (bool, error) {
return s.store.Get(ctx, query)
}
func (s *Service) GetByUser(ctx context.Context, cmd *star.GetUserStarsQuery) (*star.GetUserStarsResult, error) {
return s.store.List(ctx, cmd)
}
func (s *Service) DeleteByUser(ctx context.Context, userID int64) error {
return s.store.DeleteByUser(ctx, userID)
}