working on dashboard search

This commit is contained in:
Torkel Ödegaard
2017-11-20 12:47:03 +01:00
parent 0fe4229023
commit fc1d8416a7
9 changed files with 58 additions and 58 deletions

View File

@@ -15,7 +15,6 @@ func Search(c *middleware.Context) {
starred := c.Query("starred")
limit := c.QueryInt("limit")
dashboardType := c.Query("type")
folderId := c.QueryInt64("folderId")
if limit == 0 {
limit = 1000
@@ -29,6 +28,14 @@ func Search(c *middleware.Context) {
}
}
folderIds := make([]int64, 0)
for _, id := range c.QueryStrings("folderIds") {
folderId, err := strconv.ParseInt(id, 10, 64)
if err == nil {
folderIds = append(folderIds, folderId)
}
}
searchQuery := search.Query{
Title: query,
Tags: tags,
@@ -38,7 +45,7 @@ func Search(c *middleware.Context) {
OrgId: c.OrgId,
DashboardIds: dbids,
Type: dashboardType,
FolderId: folderId,
FolderIds: folderIds,
}
err := bus.Dispatch(&searchQuery)

View File

@@ -18,7 +18,7 @@ func searchHandler(query *Query) error {
IsStarred: query.IsStarred,
DashboardIds: query.DashboardIds,
Type: query.Type,
FolderId: query.FolderId,
FolderIds: query.FolderIds,
Tags: query.Tags,
Limit: query.Limit,
}

View File

@@ -48,22 +48,21 @@ type Query struct {
IsStarred bool
Type string
DashboardIds []int64
FolderId int64
FolderIds []int64
Result HitList
}
type FindPersistedDashboardsQuery struct {
Title string
OrgId int64
SignedInUser *models.SignedInUser
IsStarred bool
DashboardIds []int64
Type string
FolderId int64
Tags []string
ExpandedFolders []int64
Limit int
Title string
OrgId int64
SignedInUser *models.SignedInUser
IsStarred bool
DashboardIds []int64
Type string
FolderIds []int64
Tags []string
Limit int
Result HitList
}

View File

@@ -207,12 +207,8 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear
sb.WithType(query.Type)
}
if query.FolderId > 0 {
sb.WithFolderId(query.FolderId)
}
if len(query.ExpandedFolders) > 0 {
sb.WithExpandedFolders(query.ExpandedFolders)
if len(query.FolderIds) > 0 {
sb.WithFolderIds(query.FolderIds)
}
var res []DashboardSearchProjection

View File

@@ -384,7 +384,7 @@ func TestDashboardDataAccess(t *testing.T) {
Convey("and one folder is expanded, the other collapsed", func() {
Convey("should return dashboards in root and expanded folder", func() {
query := &search.FindPersistedDashboardsQuery{ExpandedFolders: []int64{folder1.Id}, SignedInUser: &m.SignedInUser{UserId: currentUser.Id, OrgId: 1}, OrgId: 1}
query := &search.FindPersistedDashboardsQuery{FolderIds: []int64{folder1.Id}, SignedInUser: &m.SignedInUser{UserId: currentUser.Id, OrgId: 1}, OrgId: 1}
err := SearchDashboards(query)
So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 4)

View File

@@ -139,7 +139,7 @@ func addDashboardMigration(mg *Migrator) {
// add column to store folder_id for dashboard folder structure
mg.AddMigration("Add column folder_id in dashboard", NewAddColumnMigration(dashboardV2, &Column{
Name: "folder_id", Type: DB_BigInt, Nullable: true,
Name: "folder_id", Type: DB_BigInt, Nullable: false, Default: "0",
}))
mg.AddMigration("Add column isFolder in dashboard", NewAddColumnMigration(dashboardV2, &Column{

View File

@@ -17,8 +17,7 @@ type SearchBuilder struct {
whereTitle string
whereTypeFolder bool
whereTypeDash bool
whereFolderId int64
expandedFolders []int64
whereFolderIds []int64
sql bytes.Buffer
params []interface{}
}
@@ -72,14 +71,8 @@ func (sb *SearchBuilder) WithType(queryType string) *SearchBuilder {
return sb
}
func (sb *SearchBuilder) WithFolderId(folderId int64) *SearchBuilder {
sb.whereFolderId = folderId
return sb
}
func (sb *SearchBuilder) WithExpandedFolders(expandedFolders []int64) *SearchBuilder {
sb.expandedFolders = expandedFolders
func (sb *SearchBuilder) WithFolderIds(folderIds []int64) *SearchBuilder {
sb.whereFolderIds = folderIds
return sb
}
@@ -212,17 +205,10 @@ func (sb *SearchBuilder) buildSearchWhereClause() {
sb.sql.WriteString(" AND dashboard.is_folder = 0")
}
if sb.whereFolderId > 0 {
sb.sql.WriteString(" AND dashboard.folder_id = ?")
sb.params = append(sb.params, sb.whereFolderId)
}
if len(sb.expandedFolders) > 0 {
sb.sql.WriteString(` AND (dashboard.folder_id IN (?` + strings.Repeat(",?", len(sb.expandedFolders)-1) + `) `)
sb.sql.WriteString(` OR dashboard.folder_id IS NULL OR dashboard.folder_id = 0)`)
for _, ef := range sb.expandedFolders {
sb.params = append(sb.params, ef)
if len(sb.whereFolderIds) > 0 {
sb.sql.WriteString(` AND dashboard.folder_id IN (?` + strings.Repeat(",?", len(sb.whereFolderIds)-1) + `) `)
for _, id := range sb.whereFolderIds {
sb.params = append(sb.params, id)
}
}
}