search.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. "github.com/grafana/grafana/pkg/middleware"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/services/search"
  7. )
  8. func Search(c *middleware.Context) {
  9. query := c.Query("query")
  10. tag := c.Query("tag")
  11. tagcloud := c.Query("tagcloud")
  12. starred := c.Query("starred")
  13. limit := c.QueryInt("limit")
  14. if limit == 0 {
  15. limit = 200
  16. }
  17. result := m.SearchResult{
  18. Dashboards: []*m.DashboardSearchHit{},
  19. Tags: []*m.DashboardTagCloudItem{},
  20. }
  21. if tagcloud == "true" {
  22. query := m.GetDashboardTagsQuery{OrgId: c.OrgId}
  23. err := bus.Dispatch(&query)
  24. if err != nil {
  25. c.JsonApiErr(500, "Failed to get tags from database", err)
  26. return
  27. }
  28. result.Tags = query.Result
  29. result.TagsOnly = true
  30. } else {
  31. query := search.Query{
  32. Title: query,
  33. Tag: tag,
  34. UserId: c.UserId,
  35. Limit: limit,
  36. IsStarred: starred == "true",
  37. OrgId: c.OrgId,
  38. }
  39. err := bus.Dispatch(&query)
  40. if err != nil {
  41. c.JsonApiErr(500, "Search failed", err)
  42. return
  43. }
  44. result.Dashboards = query.Result
  45. }
  46. c.JSON(200, result)
  47. }