mirror of https://github.com/grafana/grafana
integrat star service into APIs (#49220)
parent
426324ad3e
commit
e2ea064584
@ -1,68 +0,0 @@ |
||||
package sqlstore |
||||
|
||||
import ( |
||||
"context" |
||||
|
||||
"github.com/grafana/grafana/pkg/models" |
||||
) |
||||
|
||||
func (ss *SQLStore) IsStarredByUserCtx(ctx context.Context, query *models.IsStarredByUserQuery) error { |
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error { |
||||
rawSQL := "SELECT 1 from star where user_id=? and dashboard_id=?" |
||||
results, err := sess.Query(rawSQL, query.UserId, query.DashboardId) |
||||
|
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
if len(results) == 0 { |
||||
return nil |
||||
} |
||||
|
||||
query.Result = true |
||||
|
||||
return nil |
||||
}) |
||||
} |
||||
|
||||
func (ss *SQLStore) StarDashboard(ctx context.Context, cmd *models.StarDashboardCommand) error { |
||||
if cmd.DashboardId == 0 || cmd.UserId == 0 { |
||||
return models.ErrCommandValidationFailed |
||||
} |
||||
|
||||
return ss.WithTransactionalDbSession(ctx, func(sess *DBSession) error { |
||||
entity := models.Star{ |
||||
UserId: cmd.UserId, |
||||
DashboardId: cmd.DashboardId, |
||||
} |
||||
|
||||
_, err := sess.Insert(&entity) |
||||
return err |
||||
}) |
||||
} |
||||
|
||||
func (ss *SQLStore) UnstarDashboard(ctx context.Context, cmd *models.UnstarDashboardCommand) error { |
||||
if cmd.DashboardId == 0 || cmd.UserId == 0 { |
||||
return models.ErrCommandValidationFailed |
||||
} |
||||
|
||||
return ss.WithTransactionalDbSession(ctx, func(sess *DBSession) error { |
||||
var rawSQL = "DELETE FROM star WHERE user_id=? and dashboard_id=?" |
||||
_, err := sess.Exec(rawSQL, cmd.UserId, cmd.DashboardId) |
||||
return err |
||||
}) |
||||
} |
||||
|
||||
func (ss *SQLStore) GetUserStars(ctx context.Context, query *models.GetUserStarsQuery) error { |
||||
return ss.WithDbSession(ctx, func(dbSession *DBSession) error { |
||||
var stars = make([]models.Star, 0) |
||||
err := dbSession.Where("user_id=?", query.UserId).Find(&stars) |
||||
|
||||
query.Result = make(map[int64]bool) |
||||
for _, star := range stars { |
||||
query.Result[star.DashboardId] = true |
||||
} |
||||
|
||||
return err |
||||
}) |
||||
} |
||||
@ -1,44 +0,0 @@ |
||||
//go:build integration
|
||||
// +build integration
|
||||
|
||||
package sqlstore |
||||
|
||||
import ( |
||||
"context" |
||||
"testing" |
||||
|
||||
"github.com/grafana/grafana/pkg/models" |
||||
"github.com/stretchr/testify/require" |
||||
) |
||||
|
||||
func TestUserStarsDataAccess(t *testing.T) { |
||||
t.Run("Testing User Stars Data Access", func(t *testing.T) { |
||||
sqlStore := InitTestDB(t) |
||||
|
||||
t.Run("Given saved star", func(t *testing.T) { |
||||
cmd := models.StarDashboardCommand{ |
||||
DashboardId: 10, |
||||
UserId: 12, |
||||
} |
||||
|
||||
err := sqlStore.StarDashboard(context.Background(), &cmd) |
||||
require.NoError(t, err) |
||||
|
||||
t.Run("IsStarredByUser should return true when starred", func(t *testing.T) { |
||||
query := models.IsStarredByUserQuery{UserId: 12, DashboardId: 10} |
||||
err := sqlStore.IsStarredByUserCtx(context.Background(), &query) |
||||
require.NoError(t, err) |
||||
|
||||
require.True(t, query.Result) |
||||
}) |
||||
|
||||
t.Run("IsStarredByUser should return false when not starred", func(t *testing.T) { |
||||
query := models.IsStarredByUserQuery{UserId: 12, DashboardId: 12} |
||||
err := sqlStore.IsStarredByUserCtx(context.Background(), &query) |
||||
require.NoError(t, err) |
||||
|
||||
require.False(t, query.Result) |
||||
}) |
||||
}) |
||||
}) |
||||
} |
||||
Loading…
Reference in new issue