|
@@ -1,16 +1,16 @@
|
|
|
package api
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "github.com/torkelo/grafana-pro/pkg/api/dtos"
|
|
|
|
|
|
|
+ "github.com/torkelo/grafana-pro/pkg/bus"
|
|
|
"github.com/torkelo/grafana-pro/pkg/middleware"
|
|
"github.com/torkelo/grafana-pro/pkg/middleware"
|
|
|
- "github.com/torkelo/grafana-pro/pkg/models"
|
|
|
|
|
|
|
+ m "github.com/torkelo/grafana-pro/pkg/models"
|
|
|
"github.com/torkelo/grafana-pro/pkg/utils"
|
|
"github.com/torkelo/grafana-pro/pkg/utils"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func GetDashboard(c *middleware.Context) {
|
|
func GetDashboard(c *middleware.Context) {
|
|
|
slug := c.Params(":slug")
|
|
slug := c.Params(":slug")
|
|
|
|
|
|
|
|
- dash, err := models.GetDashboard(slug, c.GetAccountId())
|
|
|
|
|
|
|
+ dash, err := m.GetDashboard(slug, c.GetAccountId())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.JsonApiErr(404, "Dashboard not found", nil)
|
|
c.JsonApiErr(404, "Dashboard not found", nil)
|
|
|
return
|
|
return
|
|
@@ -24,13 +24,13 @@ func GetDashboard(c *middleware.Context) {
|
|
|
func DeleteDashboard(c *middleware.Context) {
|
|
func DeleteDashboard(c *middleware.Context) {
|
|
|
slug := c.Params(":slug")
|
|
slug := c.Params(":slug")
|
|
|
|
|
|
|
|
- dash, err := models.GetDashboard(slug, c.GetAccountId())
|
|
|
|
|
|
|
+ dash, err := m.GetDashboard(slug, c.GetAccountId())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.JsonApiErr(404, "Dashboard not found", nil)
|
|
c.JsonApiErr(404, "Dashboard not found", nil)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- err = models.DeleteDashboard(slug, c.GetAccountId())
|
|
|
|
|
|
|
+ err = m.DeleteDashboard(slug, c.GetAccountId())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.JsonApiErr(500, "Failed to delete dashboard", err)
|
|
c.JsonApiErr(500, "Failed to delete dashboard", err)
|
|
|
return
|
|
return
|
|
@@ -44,7 +44,7 @@ func DeleteDashboard(c *middleware.Context) {
|
|
|
func Search(c *middleware.Context) {
|
|
func Search(c *middleware.Context) {
|
|
|
query := c.Query("q")
|
|
query := c.Query("q")
|
|
|
|
|
|
|
|
- results, err := models.SearchQuery(query, c.GetAccountId())
|
|
|
|
|
|
|
+ results, err := m.SearchQuery(query, c.GetAccountId())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.JsonApiErr(500, "Search failed", err)
|
|
c.JsonApiErr(500, "Search failed", err)
|
|
|
return
|
|
return
|
|
@@ -53,39 +53,21 @@ func Search(c *middleware.Context) {
|
|
|
c.JSON(200, results)
|
|
c.JSON(200, results)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func convertToStringArray(arr []interface{}) []string {
|
|
|
|
|
- b := make([]string, len(arr))
|
|
|
|
|
- for i := range arr {
|
|
|
|
|
- b[i] = arr[i].(string)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return b
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
func PostDashboard(c *middleware.Context) {
|
|
func PostDashboard(c *middleware.Context) {
|
|
|
- var command dtos.SaveDashboardCommand
|
|
|
|
|
|
|
+ var cmd m.SaveDashboardCommand
|
|
|
|
|
|
|
|
- if !c.JsonBody(&command) {
|
|
|
|
|
|
|
+ if !c.JsonBody(&cmd) {
|
|
|
c.JsonApiErr(400, "bad request", nil)
|
|
c.JsonApiErr(400, "bad request", nil)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- dashboard := models.NewDashboard("test")
|
|
|
|
|
- dashboard.Data = command.Dashboard
|
|
|
|
|
- dashboard.Title = dashboard.Data["title"].(string)
|
|
|
|
|
- dashboard.AccountId = c.GetAccountId()
|
|
|
|
|
- dashboard.Tags = convertToStringArray(dashboard.Data["tags"].([]interface{}))
|
|
|
|
|
- dashboard.UpdateSlug()
|
|
|
|
|
-
|
|
|
|
|
- if dashboard.Data["id"] != nil {
|
|
|
|
|
- dashboard.Id = int64(dashboard.Data["id"].(float64))
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ cmd.AccountId = c.GetAccountId()
|
|
|
|
|
|
|
|
- err := models.SaveDashboard(dashboard)
|
|
|
|
|
|
|
+ err := bus.Dispatch(cmd)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.JsonApiErr(500, "Failed to save dashboard", err)
|
|
c.JsonApiErr(500, "Failed to save dashboard", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- c.JSON(200, utils.DynMap{"status": "success", "slug": dashboard.Slug})
|
|
|
|
|
|
|
+ c.JSON(200, utils.DynMap{"status": "success", "slug": cmd.Result.Slug})
|
|
|
}
|
|
}
|