mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 05:53:15 +08:00
Chore: Remove extra loop over folders in GetFolders handler (#79933)
Chore: Remove extra loop in GetFolders handler
This commit is contained in:
@ -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
|
||||||
|
Reference in New Issue
Block a user