From 66621d762e84c20e3835ba7386d9e5aeb5ff64d3 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Thu, 17 Mar 2016 01:01:58 -0700 Subject: [PATCH] Added getDashboardSlugById api --- pkg/api/api.go | 1 + pkg/api/dashboard.go | 14 ++++++++++++++ pkg/api/dtos/models.go | 4 ++++ pkg/models/dashboards.go | 5 +++++ pkg/services/sqlstore/dashboard.go | 15 +++++++++++++++ 5 files changed, 39 insertions(+) diff --git a/pkg/api/api.go b/pkg/api/api.go index 0abc4bd6026..a30c88eb58d 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -200,6 +200,7 @@ func Register(r *macaron.Macaron) { r.Get("/home", GetHomeDashboard) r.Get("/tags", GetDashboardTags) r.Post("/import", bind(dtos.ImportDashboardCommand{}), wrap(ImportDashboard)) + r.Get("/id/:id", GetDashboardSlugById) }) // Dashboard snapshots diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 22f9e1e22a1..d6c0fa0a827 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -204,3 +204,17 @@ func GetDashboardTags(c *middleware.Context) { c.JSON(200, query.Result) } + +func GetDashboardSlugById(c *middleware.Context) { + dashId := c.ParamsInt64(":id") + query := m.GetDashboardSlugByIdQuery{Id: dashId} + err := bus.Dispatch(&query) + if err != nil { + c.JsonApiErr(500, "Failed to get slug from database", err) + return + } + + slug := dtos.DashboardSlug{Slug: query.Result} + + c.JSON(200, &slug) +} diff --git a/pkg/api/dtos/models.go b/pkg/api/dtos/models.go index 26295dd3d3c..9fb48e059b4 100644 --- a/pkg/api/dtos/models.go +++ b/pkg/api/dtos/models.go @@ -57,6 +57,10 @@ type DashboardFullWithMeta struct { Dashboard *simplejson.Json `json:"dashboard"` } +type DashboardSlug struct { + Slug string `json:"slug"` +} + type DataSource struct { Id int64 `json:"id"` OrgId int64 `json:"orgId"` diff --git a/pkg/models/dashboards.go b/pkg/models/dashboards.go index 6243c729624..6b19224f934 100644 --- a/pkg/models/dashboards.go +++ b/pkg/models/dashboards.go @@ -148,3 +148,8 @@ type GetDashboardsQuery struct { DashboardIds []int64 Result *[]Dashboard } + +type GetDashboardSlugByIdQuery struct { + Id int64 + Result string +} diff --git a/pkg/services/sqlstore/dashboard.go b/pkg/services/sqlstore/dashboard.go index 396d507cfd2..2e8fd748154 100644 --- a/pkg/services/sqlstore/dashboard.go +++ b/pkg/services/sqlstore/dashboard.go @@ -18,6 +18,7 @@ func init() { bus.AddHandler("sql", DeleteDashboard) bus.AddHandler("sql", SearchDashboards) bus.AddHandler("sql", GetDashboardTags) + bus.AddHandler("sql", GetDashboardSlugById) } func SaveDashboard(cmd *m.SaveDashboardCommand) error { @@ -255,3 +256,17 @@ func GetDashboards(query *m.GetDashboardsQuery) error { return nil } + +func GetDashboardSlugById(query *m.GetDashboardSlugByIdQuery) error { + dashboard := m.Dashboard{Id: query.Id} + has, err := x.Get(&dashboard) + query.Result = dashboard.Slug + + if err != nil { + return err + } else if has == false { + return m.ErrDashboardNotFound + } + + return nil +}