stars.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package api
  2. import (
  3. "strconv"
  4. "github.com/torkelo/grafana-pro/pkg/api/dtos"
  5. "github.com/torkelo/grafana-pro/pkg/bus"
  6. "github.com/torkelo/grafana-pro/pkg/middleware"
  7. m "github.com/torkelo/grafana-pro/pkg/models"
  8. )
  9. func StarDashboard(c *middleware.Context) {
  10. var cmd = m.StarDashboardCommand{
  11. UserId: c.UserId,
  12. DashboardId: c.ParamsInt64(":id"),
  13. }
  14. if cmd.DashboardId <= 0 {
  15. c.JsonApiErr(400, "Missing dashboard id", nil)
  16. return
  17. }
  18. if err := bus.Dispatch(&cmd); err != nil {
  19. c.JsonApiErr(500, "Failed to star dashboard", err)
  20. return
  21. }
  22. c.JsonOK("Dashboard starred!")
  23. }
  24. func UnstarDashboard(c *middleware.Context) {
  25. var cmd = m.UnstarDashboardCommand{
  26. UserId: c.UserId,
  27. DashboardId: c.ParamsInt64(":id"),
  28. }
  29. if cmd.DashboardId <= 0 {
  30. c.JsonApiErr(400, "Missing dashboard id", nil)
  31. return
  32. }
  33. if err := bus.Dispatch(&cmd); err != nil {
  34. c.JsonApiErr(500, "Failed to unstar dashboard", err)
  35. return
  36. }
  37. c.JsonOK("Dashboard unstarred")
  38. }
  39. func GetUserStars(c *middleware.Context) {
  40. query := m.GetUserStarsQuery{UserId: c.UserId}
  41. if err := bus.Dispatch(&query); err != nil {
  42. c.JsonApiErr(500, "Failed to get user stars", err)
  43. return
  44. }
  45. var result dtos.UserStars
  46. result.DashboardIds = make(map[string]bool)
  47. for _, star := range query.Result {
  48. result.DashboardIds[strconv.FormatInt(star.DashboardId, 10)] = true
  49. }
  50. c.JSON(200, &result)
  51. }