Revert "Nested Folders: Fix fetching a folder by title" (#76469)

Revert "Nested Folders: Fix fetching a folder by title (#74725)"

This reverts commit 0eac9aff7f.
pull/76145/head
Sofia Papagiannaki 2 years ago committed by GitHub
parent 29cf60988b
commit bdeb829cf6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      pkg/services/folder/folderimpl/sqlstore.go
  2. 38
      pkg/services/folder/folderimpl/sqlstore_test.go
  3. 14
      pkg/services/folder/model.go
  4. 5
      pkg/services/folder/service.go

@ -166,15 +166,7 @@ func (ss *sqlStore) Get(ctx context.Context, q folder.GetFolderQuery) (*folder.F
case q.ID != nil:
exists, err = sess.SQL("SELECT * FROM folder WHERE id = ?", q.ID).Get(foldr)
case q.Title != nil:
args := []any{*q.Title, q.OrgID}
s := "SELECT * FROM folder WHERE title = ? AND org_id = ?"
if q.ParentUID != nil {
s = s + " AND parent_uid = ?"
args = append(args, *q.ParentUID)
} else {
s = s + " AND parent_uid IS NULL"
}
exists, err = sess.SQL(s, args...).Get(foldr)
exists, err = sess.SQL("SELECT * FROM folder WHERE title = ? AND org_id = ?", q.Title, q.OrgID).Get(foldr)
default:
return folder.ErrBadRequest.Errorf("one of ID, UID, or Title must be included in the command")
}

@ -384,17 +384,6 @@ func TestIntegrationGet(t *testing.T) {
})
require.NoError(t, err)
// create subfolder with same title
subfolderUID := util.GenerateShortUID()
subfolder, err := folderStore.Create(context.Background(), folder.CreateFolderCommand{
Title: folderTitle,
Description: folderDsc,
OrgID: orgID,
UID: subfolderUID,
ParentUID: f.UID,
})
require.NoError(t, err)
t.Cleanup(func() {
err := folderStore.Delete(context.Background(), f.UID, orgID)
require.NoError(t, err)
@ -416,14 +405,15 @@ func TestIntegrationGet(t *testing.T) {
assert.Equal(t, f.OrgID, ff.OrgID)
assert.Equal(t, f.Title, ff.Title)
assert.Equal(t, f.Description, ff.Description)
//assert.Equal(t, folder.GeneralFolderUID, ff.ParentUID)
assert.NotEmpty(t, ff.Created)
assert.NotEmpty(t, ff.Updated)
assert.NotEmpty(t, ff.URL)
})
t.Run("get folder by title should return folder under root", func(t *testing.T) {
t.Run("get folder by title should succeed", func(t *testing.T) {
ff, err := folderStore.Get(context.Background(), folder.GetFolderQuery{
Title: &folderTitle,
Title: &f.Title,
OrgID: orgID,
})
require.NoError(t, err)
@ -432,30 +422,13 @@ func TestIntegrationGet(t *testing.T) {
assert.Equal(t, f.OrgID, ff.OrgID)
assert.Equal(t, f.Title, ff.Title)
assert.Equal(t, f.Description, ff.Description)
//assert.Equal(t, folder.GeneralFolderUID, ff.ParentUID)
assert.NotEmpty(t, ff.Created)
assert.NotEmpty(t, ff.Updated)
assert.NotEmpty(t, ff.URL)
})
t.Run("get folder by title and parent UID should return subfolder", func(t *testing.T) {
ff, err := folderStore.Get(context.Background(), folder.GetFolderQuery{
Title: &folderTitle,
OrgID: orgID,
ParentUID: &f.UID,
})
require.NoError(t, err)
assert.Equal(t, subfolder.ID, ff.ID)
assert.Equal(t, subfolder.UID, ff.UID)
assert.Equal(t, subfolder.OrgID, ff.OrgID)
assert.Equal(t, subfolder.Title, ff.Title)
assert.Equal(t, subfolder.Description, ff.Description)
assert.Equal(t, subfolder.ParentUID, ff.ParentUID)
assert.NotEmpty(t, subfolder.Created)
assert.NotEmpty(t, subfolder.Updated)
assert.NotEmpty(t, subfolder.URL)
})
t.Run("get folder by ID should succeed", func(t *testing.T) {
t.Run("get folder by title should succeed", func(t *testing.T) {
ff, err := folderStore.Get(context.Background(), folder.GetFolderQuery{
ID: &f.ID,
})
@ -465,6 +438,7 @@ func TestIntegrationGet(t *testing.T) {
assert.Equal(t, f.OrgID, ff.OrgID)
assert.Equal(t, f.Title, ff.Title)
assert.Equal(t, f.Description, ff.Description)
//assert.Equal(t, folder.GeneralFolderUID, ff.ParentUID)
assert.NotEmpty(t, ff.Created)
assert.NotEmpty(t, ff.Updated)
assert.NotEmpty(t, ff.URL)

@ -125,15 +125,13 @@ type DeleteFolderCommand struct {
// GetFolderQuery is used for all folder Get requests. Only one of UID, ID, or
// Title should be set; if multiple fields are set by the caller the dashboard
// service will select the field with the most specificity, in order: UID, ID
// Title. If Title is set, it will fetch the folder in the root folder.
// Callers can additionally set the ParentUID field to fetch a folder by title under a specific folder.
// service will select the field with the most specificity, in order: ID, UID,
// Title.
type GetFolderQuery struct {
UID *string
ParentUID *string
ID *int64
Title *string
OrgID int64
UID *string
ID *int64
Title *string
OrgID int64
SignedInUser identity.Requester `json:"-"`
}

@ -15,10 +15,7 @@ type Service interface {
// GetFolder takes a GetFolderCommand and returns a folder matching the
// request. One of ID, UID, or Title must be included. If multiple values
// are included in the request, Grafana will select one in order of
// specificity (UID, ID,Title).
// If Title is set, it will fetch the folder in the root folder.
// If nested folders are enabled, callers can additionally set the ParentUID field
// to fetch a folder by title under a specific folder.
// specificity (ID, UID, Title).
Get(ctx context.Context, cmd *GetFolderQuery) (*Folder, error)
// Update is used to update a folder's UID, Title and Description. To change

Loading…
Cancel
Save