From c0918d41dda3d30698caa8f73369f923f7d864c6 Mon Sep 17 00:00:00 2001 From: Tania <10127682+undef1nd@users.noreply.github.com> Date: Tue, 16 Jan 2024 12:35:10 +0100 Subject: [PATCH] Chore: Remove extra loop over folders in GetFolders handler (#79933) Chore: Remove extra loop in GetFolders handler --- pkg/api/folder.go | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/pkg/api/folder.go b/pkg/api/folder.go index a3a8eff342a..2d1d69ec8f4 100644 --- a/pkg/api/folder.go +++ b/pkg/api/folder.go @@ -42,35 +42,39 @@ const REDACTED = "redacted" // 403: forbiddenError // 500: internalServerError func (hs *HTTPServer) GetFolders(c *contextmodel.ReqContext) response.Response { - var folders []*folder.Folder - var err error if hs.Features.IsEnabled(c.Req.Context(), featuremgmt.FlagNestedFolders) { - folders, err = hs.folderService.GetChildren(c.Req.Context(), &folder.GetChildrenQuery{ + q := &folder.GetChildrenQuery{ OrgID: c.SignedInUser.GetOrgID(), Limit: c.QueryInt64("limit"), Page: c.QueryInt64("page"), UID: c.Query("parentUid"), SignedInUser: c.SignedInUser, - }) - } else { - folders, err = hs.searchFolders(c) + } + + folders, err := hs.folderService.GetChildren(c.Req.Context(), q) + if err != nil { + return apierrors.ToFolderErrorResponse(err) + } + + hits := make([]dtos.FolderSearchHit, 0) + for _, f := range folders { + hits = append(hits, dtos.FolderSearchHit{ + ID: f.ID, // nolint:staticcheck + UID: f.UID, + Title: f.Title, + ParentUID: f.ParentUID, + }) + } + + return response.JSON(http.StatusOK, hits) } + hits, err := hs.searchFolders(c) if err != nil { return apierrors.ToFolderErrorResponse(err) } - result := make([]dtos.FolderSearchHit, 0) - for _, f := range folders { - result = append(result, dtos.FolderSearchHit{ - ID: f.ID, // nolint:staticcheck - UID: f.UID, - Title: f.Title, - ParentUID: f.ParentUID, - }) - } - - return response.JSON(http.StatusOK, result) + return response.JSON(http.StatusOK, hits) } // swagger:route GET /folders/{folder_uid} folders getFolderByUID @@ -441,7 +445,7 @@ func (hs *HTTPServer) getFolderACMetadata(c *contextmodel.ReqContext, f *folder. return metadata, nil } -func (hs *HTTPServer) searchFolders(c *contextmodel.ReqContext) ([]*folder.Folder, error) { +func (hs *HTTPServer) searchFolders(c *contextmodel.ReqContext) ([]dtos.FolderSearchHit, error) { searchQuery := search.Query{ SignedInUser: c.SignedInUser, DashboardIds: make([]int64, 0), @@ -458,17 +462,16 @@ func (hs *HTTPServer) searchFolders(c *contextmodel.ReqContext) ([]*folder.Folde return nil, err } - folders := make([]*folder.Folder, 0) - + folderHits := make([]dtos.FolderSearchHit, 0) for _, hit := range hits { - folders = append(folders, &folder.Folder{ + folderHits = append(folderHits, dtos.FolderSearchHit{ ID: hit.ID, // nolint:staticcheck UID: hit.UID, Title: hit.Title, }) } - return folders, nil + return folderHits, nil } // swagger:parameters getFolders