Search: create bluge based index (#48606)

This commit is contained in:
Ryan McKinley
2022-05-09 01:00:09 -07:00
committed by GitHub
parent 5c2dee19d5
commit d6d358ef26
7 changed files with 822 additions and 25 deletions

View File

@@ -105,8 +105,24 @@ func (s *StandardSearchService) getUser(ctx context.Context, backendUser *backen
return user, nil
}
func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *backend.User, orgId int64, _ DashboardQuery) *backend.DataResponse {
func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *backend.User, orgId int64, q DashboardQuery) *backend.DataResponse {
rsp := &backend.DataResponse{}
signedInUser, err := s.getUser(ctx, user, orgId)
if err != nil {
rsp.Error = err
return rsp
}
filter, err := s.auth.GetDashboardReadFilter(signedInUser)
if err != nil {
rsp.Error = err
return rsp
}
reader := s.dashboardIndex.reader[orgId]
if reader != nil && q.Query != "" { // frontend initializes with empty string
return doBlugeQuery(ctx, s, reader, filter, q)
}
dashboards, err := s.dashboardIndex.getDashboards(ctx, orgId)
if err != nil {
@@ -114,29 +130,14 @@ func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *back
return rsp
}
signedInUser, err := s.getUser(ctx, user, orgId)
if err != nil {
rsp.Error = err
return rsp
}
dashboards, err = s.applyAuthFilter(signedInUser, dashboards)
if err != nil {
rsp.Error = err
return rsp
}
dashboards = s.applyAuthFilter(filter, dashboards)
rsp.Frames = metaToFrame(dashboards)
return rsp
}
func (s *StandardSearchService) applyAuthFilter(user *models.SignedInUser, dashboards []dashboard) ([]dashboard, error) {
filter, err := s.auth.GetDashboardReadFilter(user)
if err != nil {
return nil, err
}
func (s *StandardSearchService) applyAuthFilter(filter ResourceFilter, dashboards []dashboard) []dashboard {
// create a list of all viewable dashboards for this user.
res := make([]dashboard, 0, len(dashboards))
for _, dash := range dashboards {
@@ -144,7 +145,7 @@ func (s *StandardSearchService) applyAuthFilter(user *models.SignedInUser, dashb
res = append(res, dash)
}
}
return res, nil
return res
}
type simpleCounter struct {