Chore: Propagate context for search (#41010)
Propagate context for search.Query, FindPersistedDashboardsQuery, GetUserStarsQuery. Followup on context.TODO added by #40810. Ref #36734
This commit is contained in:
@@ -29,7 +29,6 @@ func init() {
|
||||
bus.AddHandlerCtx("sql", GetDashboard)
|
||||
bus.AddHandlerCtx("sql", GetDashboards)
|
||||
bus.AddHandlerCtx("sql", DeleteDashboard)
|
||||
bus.AddHandlerCtx("sql", SearchDashboards)
|
||||
bus.AddHandlerCtx("sql", GetDashboardTags)
|
||||
bus.AddHandlerCtx("sql", GetDashboardSlugById)
|
||||
bus.AddHandlerCtx("sql", GetDashboardsByPluginId)
|
||||
@@ -43,6 +42,7 @@ func init() {
|
||||
|
||||
func (ss *SQLStore) addDashboardQueryAndCommandHandlers() {
|
||||
bus.AddHandlerCtx("sql", ss.GetDashboardUIDById)
|
||||
bus.AddHandlerCtx("sql", ss.SearchDashboards)
|
||||
}
|
||||
|
||||
var generateNewUid func() string = util.GenerateShortUID
|
||||
@@ -267,7 +267,7 @@ type DashboardSearchProjection struct {
|
||||
SortMeta int64
|
||||
}
|
||||
|
||||
func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSearchProjection, error) {
|
||||
func (ss *SQLStore) findDashboards(ctx context.Context, query *search.FindPersistedDashboardsQuery) ([]DashboardSearchProjection, error) {
|
||||
filters := []interface{}{
|
||||
permissions.DashboardPermissionFilter{
|
||||
OrgRole: query.SignedInUser.OrgRole,
|
||||
@@ -326,7 +326,11 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear
|
||||
}
|
||||
|
||||
sql, params := sb.ToSQL(limit, page)
|
||||
err := x.SQL(sql, params...).Find(&res)
|
||||
|
||||
err := ss.WithDbSession(ctx, func(dbSession *DBSession) error {
|
||||
return dbSession.SQL(sql, params...).Find(&res)
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -334,8 +338,8 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func SearchDashboards(ctx context.Context, query *search.FindPersistedDashboardsQuery) error {
|
||||
res, err := findDashboards(query)
|
||||
func (ss *SQLStore) SearchDashboards(ctx context.Context, query *search.FindPersistedDashboardsQuery) error {
|
||||
res, err := ss.findDashboards(ctx, query)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
require.Equal(t, query.Result[0].ID, folder.Id)
|
||||
@@ -61,7 +61,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{UserId: currentUser.Id, OrgId: 1, OrgRole: models.ROLE_VIEWER},
|
||||
OrgId: 1, DashboardIds: []int64{folder.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -80,7 +80,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
require.Equal(t, query.Result[0].ID, folder.Id)
|
||||
@@ -99,7 +99,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
require.Equal(t, query.Result[0].ID, folder.Id)
|
||||
@@ -121,7 +121,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
query := &search.FindPersistedDashboardsQuery{
|
||||
SignedInUser: &models.SignedInUser{UserId: currentUser.Id, OrgId: 1, OrgRole: models.ROLE_VIEWER}, OrgId: 1, DashboardIds: []int64{folder.Id, childDash.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
require.Equal(t, query.Result[0].ID, dashInRoot.Id)
|
||||
@@ -135,7 +135,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
|
||||
t.Run("should be able to search for child dashboard but not folder", func(t *testing.T) {
|
||||
query := &search.FindPersistedDashboardsQuery{SignedInUser: &models.SignedInUser{UserId: currentUser.Id, OrgId: 1, OrgRole: models.ROLE_VIEWER}, OrgId: 1, DashboardIds: []int64{folder.Id, childDash.Id, dashInRoot.Id}}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
require.Equal(t, query.Result[0].ID, childDash.Id)
|
||||
@@ -154,7 +154,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder.Id, dashInRoot.Id, childDash.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 3)
|
||||
require.Equal(t, query.Result[0].ID, folder.Id)
|
||||
@@ -192,7 +192,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
},
|
||||
OrgId: 1,
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 4)
|
||||
require.Equal(t, query.Result[0].ID, folder1.Id)
|
||||
@@ -218,7 +218,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder1.Id, childDash1.Id, childDash2.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
require.Equal(t, query.Result[0].ID, dashInRoot.Id)
|
||||
@@ -234,7 +234,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder2.Id, childDash1.Id, childDash2.Id, dashInRoot.Id},
|
||||
}
|
||||
err := SearchDashboards(context.Background(), query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 4)
|
||||
require.Equal(t, query.Result[0].ID, folder2.Id)
|
||||
@@ -258,7 +258,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
OrgId: 1,
|
||||
DashboardIds: []int64{folder2.Id, childDash1.Id, childDash2.Id, dashInRoot.Id},
|
||||
}
|
||||
err = SearchDashboards(context.Background(), query)
|
||||
err = sqlStore.SearchDashboards(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 4)
|
||||
require.Equal(t, query.Result[0].ID, folder2.Id)
|
||||
@@ -296,7 +296,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
Type: "dash-folder",
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
@@ -349,7 +349,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Run("Should have write access to all dashboard folders with default ACL", func(t *testing.T) {
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
@@ -381,7 +381,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = SearchDashboards(context.Background(), &query)
|
||||
err = sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -415,7 +415,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Run("Should have no write access to any dashboard folders with default ACL", func(t *testing.T) {
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 0)
|
||||
@@ -447,7 +447,7 @@ func TestDashboardFolderDataAccess(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = SearchDashboards(context.Background(), &query)
|
||||
err = sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
|
||||
@@ -236,7 +236,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{},
|
||||
}
|
||||
|
||||
err = SearchDashboards(context.Background(), &query)
|
||||
err = sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 0)
|
||||
@@ -305,7 +305,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -323,7 +323,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -339,7 +339,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -355,7 +355,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 3)
|
||||
@@ -370,7 +370,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
@@ -390,7 +390,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
}
|
||||
|
||||
err := SearchDashboards(context.Background(), &query)
|
||||
err := sqlStore.SearchDashboards(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(query.Result), 2)
|
||||
@@ -421,7 +421,7 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
SignedInUser: &models.SignedInUser{UserId: 10, OrgId: 1, OrgRole: models.ROLE_EDITOR},
|
||||
IsStarred: true,
|
||||
}
|
||||
err = SearchDashboards(context.Background(), &query)
|
||||
err = sqlStore.SearchDashboards(context.Background(), &query)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(query.Result), 1)
|
||||
@@ -463,7 +463,7 @@ func TestDashboard_SortingOptions(t *testing.T) {
|
||||
searchstore.TitleSorter{Descending: true},
|
||||
},
|
||||
}
|
||||
dashboards, err := findDashboards(q)
|
||||
dashboards, err := sqlStore.findDashboards(context.Background(), q)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, dashboards, 2)
|
||||
assert.Equal(t, dashA.Id, dashboards[0].ID)
|
||||
|
||||
Reference in New Issue
Block a user