mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Drop search service dependency from folder service (#61789)
* Chore: Drop search service dependency from folder service
This commit is contained in:
committed by
GitHub
parent
bedd0b311a
commit
c7a7ebd3e0
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/services/folder"
|
||||
"github.com/grafana/grafana/pkg/services/guardian"
|
||||
"github.com/grafana/grafana/pkg/services/libraryelements"
|
||||
"github.com/grafana/grafana/pkg/services/search"
|
||||
"github.com/grafana/grafana/pkg/web"
|
||||
)
|
||||
|
||||
@@ -22,7 +23,8 @@ import (
|
||||
// Get all folders.
|
||||
//
|
||||
// Returns all folders that the authenticated user has permission to view.
|
||||
// If nested folders are enabled, it expects an additional query parameter with the parent folder UID.
|
||||
// If nested folders are enabled, it expects an additional query parameter with the parent folder UID
|
||||
// and returns the immediate subfolders.
|
||||
//
|
||||
// Responses:
|
||||
// 200: getFoldersResponse
|
||||
@@ -30,13 +32,19 @@ import (
|
||||
// 403: forbiddenError
|
||||
// 500: internalServerError
|
||||
func (hs *HTTPServer) GetFolders(c *models.ReqContext) response.Response {
|
||||
folders, err := hs.folderService.GetChildren(c.Req.Context(), &folder.GetChildrenQuery{
|
||||
OrgID: c.OrgID,
|
||||
Limit: c.QueryInt64("limit"),
|
||||
Page: c.QueryInt64("page"),
|
||||
UID: c.Query("parent_uid"),
|
||||
SignedInUser: c.SignedInUser,
|
||||
})
|
||||
var folders []*folder.Folder
|
||||
var err error
|
||||
if hs.Features.IsEnabled(featuremgmt.FlagNestedFolders) {
|
||||
folders, err = hs.folderService.GetChildren(c.Req.Context(), &folder.GetChildrenQuery{
|
||||
OrgID: c.OrgID,
|
||||
Limit: c.QueryInt64("limit"),
|
||||
Page: c.QueryInt64("page"),
|
||||
UID: c.Query("parent_uid"),
|
||||
SignedInUser: c.SignedInUser,
|
||||
})
|
||||
} else {
|
||||
folders, err = hs.searchFolders(c)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return apierrors.ToFolderErrorResponse(err)
|
||||
@@ -288,6 +296,35 @@ func (hs *HTTPServer) newToFolderDto(c *models.ReqContext, g guardian.DashboardG
|
||||
}
|
||||
}
|
||||
|
||||
func (hs *HTTPServer) searchFolders(c *models.ReqContext) ([]*folder.Folder, error) {
|
||||
searchQuery := search.Query{
|
||||
SignedInUser: c.SignedInUser,
|
||||
DashboardIds: make([]int64, 0),
|
||||
FolderIds: make([]int64, 0),
|
||||
Limit: c.QueryInt64("limit"),
|
||||
OrgId: c.OrgID,
|
||||
Type: "dash-folder",
|
||||
Permission: models.PERMISSION_VIEW,
|
||||
Page: c.QueryInt64("page"),
|
||||
}
|
||||
|
||||
if err := hs.SearchService.SearchHandler(c.Req.Context(), &searchQuery); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
folders := make([]*folder.Folder, 0)
|
||||
|
||||
for _, hit := range searchQuery.Result {
|
||||
folders = append(folders, &folder.Folder{
|
||||
ID: hit.ID,
|
||||
UID: hit.UID,
|
||||
Title: hit.Title,
|
||||
})
|
||||
}
|
||||
|
||||
return folders, nil
|
||||
}
|
||||
|
||||
// swagger:parameters getFolders
|
||||
type GetFoldersParams struct {
|
||||
// Limit the maximum number of folders to return
|
||||
|
||||
Reference in New Issue
Block a user