mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 04:00:55 +08:00
59 lines
1.5 KiB
Go
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)
|
|
}
|