api_dashboard.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package api
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/torkelo/grafana-pro/pkg/models"
  5. )
  6. func init() {
  7. addRoutes(func(self *HttpServer) {
  8. self.router.GET("/api/dashboards/:id", self.getDashboard)
  9. self.router.GET("/api/search/", self.search)
  10. self.router.POST("/api/dashboard", self.postDashboard)
  11. })
  12. }
  13. func (self *HttpServer) getDashboard(c *gin.Context) {
  14. id := c.Params.ByName("id")
  15. dash, err := self.store.GetById(id)
  16. if err != nil {
  17. c.JSON(404, newErrorResponse("Dashboard not found"))
  18. return
  19. }
  20. c.JSON(200, dash.Data)
  21. }
  22. func (self *HttpServer) search(c *gin.Context) {
  23. query := c.Params.ByName("q")
  24. results, err := self.store.Query(query)
  25. if err != nil {
  26. c.JSON(500, newErrorResponse("Failed"))
  27. return
  28. }
  29. c.JSON(200, results)
  30. }
  31. func (self *HttpServer) postDashboard(c *gin.Context) {
  32. var command saveDashboardCommand
  33. if c.EnsureBody(&command) {
  34. err := self.store.Save(&models.Dashboard{Data: command.Dashboard})
  35. if err == nil {
  36. c.JSON(200, gin.H{"status": "saved"})
  37. return
  38. }
  39. }
  40. c.JSON(500, gin.H{"error": "bad request"})
  41. }