Chore: Remove extra loop over folders in GetFolders handler (#79933)

Chore: Remove extra loop in GetFolders handler
This commit is contained in:
Tania
2024-01-16 12:35:10 +01:00
committed by GitHub
parent 712c505251
commit c0918d41dd

View File

@ -42,35 +42,39 @@ const REDACTED = "redacted"
// 403: forbiddenError // 403: forbiddenError
// 500: internalServerError // 500: internalServerError
func (hs *HTTPServer) GetFolders(c *contextmodel.ReqContext) response.Response { 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) { 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(), OrgID: c.SignedInUser.GetOrgID(),
Limit: c.QueryInt64("limit"), Limit: c.QueryInt64("limit"),
Page: c.QueryInt64("page"), Page: c.QueryInt64("page"),
UID: c.Query("parentUid"), UID: c.Query("parentUid"),
SignedInUser: c.SignedInUser, 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 { if err != nil {
return apierrors.ToFolderErrorResponse(err) return apierrors.ToFolderErrorResponse(err)
} }
result := make([]dtos.FolderSearchHit, 0) return response.JSON(http.StatusOK, hits)
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)
} }
// swagger:route GET /folders/{folder_uid} folders getFolderByUID // swagger:route GET /folders/{folder_uid} folders getFolderByUID
@ -441,7 +445,7 @@ func (hs *HTTPServer) getFolderACMetadata(c *contextmodel.ReqContext, f *folder.
return metadata, nil 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{ searchQuery := search.Query{
SignedInUser: c.SignedInUser, SignedInUser: c.SignedInUser,
DashboardIds: make([]int64, 0), DashboardIds: make([]int64, 0),
@ -458,17 +462,16 @@ func (hs *HTTPServer) searchFolders(c *contextmodel.ReqContext) ([]*folder.Folde
return nil, err return nil, err
} }
folders := make([]*folder.Folder, 0) folderHits := make([]dtos.FolderSearchHit, 0)
for _, hit := range hits { for _, hit := range hits {
folders = append(folders, &folder.Folder{ folderHits = append(folderHits, dtos.FolderSearchHit{
ID: hit.ID, // nolint:staticcheck ID: hit.ID, // nolint:staticcheck
UID: hit.UID, UID: hit.UID,
Title: hit.Title, Title: hit.Title,
}) })
} }
return folders, nil return folderHits, nil
} }
// swagger:parameters getFolders // swagger:parameters getFolders