From 68b9342de373f9afae45e2387db1f73312d8babf Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Wed, 24 May 2017 18:28:13 +0200 Subject: [PATCH] WIP: dashboard search by type (folder or dash) --- pkg/api/search.go | 2 ++ pkg/services/search/handlers.go | 1 + pkg/services/search/models.go | 2 ++ pkg/services/sqlstore/dashboard.go | 8 ++++++++ 4 files changed, 13 insertions(+) diff --git a/pkg/api/search.go b/pkg/api/search.go index c68dc51e986..234405535cf 100644 --- a/pkg/api/search.go +++ b/pkg/api/search.go @@ -14,6 +14,7 @@ func Search(c *middleware.Context) { tags := c.QueryStrings("tag") starred := c.Query("starred") limit := c.QueryInt("limit") + dashboardType := c.Query("type") if limit == 0 { limit = 1000 @@ -35,6 +36,7 @@ func Search(c *middleware.Context) { IsStarred: starred == "true", OrgId: c.OrgId, DashboardIds: dbids, + Type: dashboardType, } err := bus.Dispatch(&searchQuery) diff --git a/pkg/services/search/handlers.go b/pkg/services/search/handlers.go index 0821c407c74..7573912b8f8 100644 --- a/pkg/services/search/handlers.go +++ b/pkg/services/search/handlers.go @@ -45,6 +45,7 @@ func searchHandler(query *Query) error { IsStarred: query.IsStarred, OrgId: query.OrgId, DashboardIds: query.DashboardIds, + Type: query.Type, } if err := bus.Dispatch(&dashQuery); err != nil { diff --git a/pkg/services/search/models.go b/pkg/services/search/models.go index 155806dc0e1..d44a9693403 100644 --- a/pkg/services/search/models.go +++ b/pkg/services/search/models.go @@ -46,6 +46,7 @@ type Query struct { UserId int64 Limit int IsStarred bool + Type string DashboardIds []int Result HitList @@ -57,6 +58,7 @@ type FindPersistedDashboardsQuery struct { UserId int64 IsStarred bool DashboardIds []int + Type string Result HitList } diff --git a/pkg/services/sqlstore/dashboard.go b/pkg/services/sqlstore/dashboard.go index fd560c2a0c0..a3db71afb04 100644 --- a/pkg/services/sqlstore/dashboard.go +++ b/pkg/services/sqlstore/dashboard.go @@ -201,6 +201,14 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear params = append(params, "%"+query.Title+"%") } + if len(query.Type) > 0 && query.Type == "dash-folder" { + sql.WriteString(" AND dashboard.is_folder = 1") + } + + if len(query.Type) > 0 && query.Type == "dash-db" { + sql.WriteString(" AND dashboard.is_folder = 0") + } + sql.WriteString(fmt.Sprintf(" ORDER BY dashboard.title ASC LIMIT 1000")) var res []DashboardSearchProjection